Block:
*Block
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {…};
@property (nonatomic, copy) returnType (^blockName)(parameterTypes);
- (void)methodWithBlock:(returnType (^)(parameterTypes))blockName;
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};