How Do I Declare A Block in Objective-C?
As a local variable :
returnType (^blockName )(parameterTypes ) = ^returnType (parameters ) {...};
As a property :
@property (nonatomic, copy) returnType (^blockName )(parameterTypes );
As a method parameter :
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes ))blockName ;
As an argument to a method call :
[someObject someMethodThatTakesABlock: ^returnType (parameters ) {...}];
As a typedef :
typedef returnType (^TypeName )(parameterTypes );
TypeName blockName = ^returnType (parameters ) {...};
This site doesn't cover every possible use of blocks. If you find yourself trying to do something not listed here, a typedef would likely make your code more readable.
By Mike Walker , who has a very bad memory for this sort of thing.