作为一个局部变量:
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
作为属性:
@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);
作为一个方法参数:
- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;
作为方法调用的参数:
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];
作为一个类型定义:
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
本网站不打算是一个详尽的清单,所有可能的使用块。
如果您发现自己需要这里没有列出的语法,那么typedef很可能会使您的代码更具可读性。