紧接上次的内容.我们这次来说说block作为类型的使用.就像我上次的说的那样.block是一个对象类型,既然是对象类型当然可以创建实例了.不过咱们今天用宏定义的方法实现一下.
typedef void (^block)(int, int);
解释一下,上面代码的意思就是说生命一个类型为 有两个参数,返回值为空类型的名为block的类型.大致就是这个意思,语文水平可能有点伤,大家读不通的脑部一下文字的顺序这个时候当我们向创建一个变量时候就可以直接用可以实例化对象就行了.
block b;
这个时候b就具有上述bolick一样类型的block变量.我们接下来看一下赋值
b = ^(int a , int b) {
NSLog(@"%d", a + b);
};
b(1, 2);
我们接下来看一下block做为参数的使用.
- (void)sum:(int (^)(int , int ))sum {
int a = 10;
int b = 13;
NSLog(@"%d", sum(a, b));
}
我们再来看一下调用,调用也是很简单,但是注意我们必须创建一个block变量且对象类型要和参数类型一样.
int (^block)(int a, int b) = ^(int a, int b) {
return a + b;
};
[class sum:block ];
block的用法大致就已经说完.但是请大家一定要注意,block虽然很方便,切记不能滥用.
参考:
iOS开发进阶 p190-p192 唐巧
http://rypress.com/tutorials/objective-c/blocks
Google 写的时候读了好几篇,但是大部分都是自己实际写代码的感受所得.贴上两个认为比较不错的.大家自行阅读吧.