操蛋的Block语法(译)
在ObjC中如何定义一个Block
2015-07-05ObjC
原文: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 | typedef returnType (^TypeName)(parameterTypes); |
这儿并不是用来罗列所有Block用法的列表。如果你发现你想要的语法没有在这里出现,那么很可能用一个类型定义(typedef)就可以使你的代码更有可读性了。
如果你访问不了上面的原文链接,可能是因为域名里有屏蔽词,试试这个链接。