returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);
- (void)methodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;
[someObject methodThatTakesABlock:^returnType (parameters) {...}];
typedef
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};