What are the disadvantages of using a block to define a private method inside a method instead of using a real private method? Is there anything other than the fact that you cannot call a method from another place?
Example:
-(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; }
source share