Objective C中Block的几种常用写法

| 评论

孔乙己显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说,“对呀对呀!……回字有四样写法,你知道么?”

现在,Block有多少种写法,你知道吗?Xcode的智能提示与补全虽然强大,但总有需要手写的时候,比如Block的声明与定义,这就是考验你记忆力的时候了。

Objective C以语法臃肿难记著名,其中Block的写法更是让人蛋疼,有个健忘的外国人不堪折磨,特地建立了一个网站:How Do I Declare A Block in Objective-C?

总结了几种常用的Block的声明方法:

用作本地变量

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

用作属性

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

用作方法参数声明

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

被方法调用时

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

用作Typedef定义

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

转载请注明:大众点赞 - 沉迷的大多数 » http://like.lessfun.com/blog/2014/10/21/objective-c-block-syntax/

发表评论