使用块在方法中定义私有方法而不是使用真正的私有方法有什么缺点?除了无法从其他地方调用该方法之外还有什么吗?
例:
-(NSDictionary*)serialize { NSMutableDictionary* serialization = [NSMutableDictionary dictionary]; TwoArgumentsBlockType serializeItemBlock = ^void(MyItemClass* item,Nsstring* identifier) { if (item) { // serialization code } }; serializeItemBlock(self.someItem1,kSomeIdentifier1); serializeItemBlock(self.someItem2,kSomeIdentifier2); serializeItemBlock(self.someItem3,kSomeIdentifier3); serializeItemBlock(self.someItem4,kSomeIdentifier4); serializeItemBlock(self.someItem5,kSomeIdentifier5); serializeItemBlock(self.someItem6,kSomeIdentifier6); serializeItemBlock(self.someItem7,kSomeIdentifier7); serializeItemBlock(self.someItem8,kSomeIdentifier8); serializeItemBlock(self.someItem9,kSomeIdentifier9); serializeItemBlock(self.someItem10,kSomeIdentifier10); serializeItemBlock(self.someItem11,kSomeIdentifier11); return serialization; }
解决方法
清晰的代码很重要.
方法允许您将整个代码段彼此分开封装,并使其更易于阅读.
选择私有方法而不是块的另一个原因是内存管理.这在很大程度上要讨论这个问题,但足以说块在内存管理中很奇怪,并且在这方面不像其他任何代码结构那样.