原文:How Do I Declare A Block in Objective-C?

ObjC的Block语法的确是很难记满蛋疼的,对于不想背语法的我来说(主要是大部分情况下可以智能补全),是时候写一个备忘记录一下了……

时隔一年多看了一下原文,居然新增了nullability相关的修饰词,赶紧补上。

本地变量:

1
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};

属性:

1
@property (nonatomic, copy, nullability) returnType (^blockName)(parameterTypes);

方法的参数:

1
- (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;

调用方法时传参:

1
[someObject someMethodThatTakesABlock:^returnType (parameters) {...}];

类型定义:

1
2
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};

这儿并不是用来罗列所有Block用法的列表。如果你发现你想要的语法没有在这里出现,那么很可能用一个类型定义(typedef)就可以使你的代码更有可读性了。

如果你访问不了上面的原文链接,可能是因为域名里有屏蔽词,试试这个链接