在论坛时常看见block,完全不懂下看了些文章和帖子,在这里小结算下,block是iOS4.0后添加的新特性支持,目前在项目里还没有嵌入使用,看了些理论的东西,还不错,能够加快运行效率、使代码更加简洁、异步处理等,推荐几篇学习的帖子,从讲例到代码都有,以供继续深入。
参考地址:http://www.cocoachina.com/bbs/read.php?tid=87593&keyword=block
http://www.cocoachina.com/bbs/read.php?tid=88591&keyword=block
http://www.cocoachina.com/bbs/read.php?tid=9222&keyword=block
http://blog.csdn.net/diyagoanyhacker/article/details/6580697
Block Variable
在某個變數前面如果加上修飾字__block 的話(注意block前有兩個下底線),這個變數又稱為block variable。那麼在block裡就可以任意修改此變數值,變數值的改變也可以知道。
{
__block int num = 5;
int (^myPtr) (int) = ^(int a) { return num++;};
int (^myPtr2) (int) = ^(int a) { return num++;};
int result = myPtr(0);
result = myPtr2(0);
}
因為myPtr和myPtr2都有用到num這個block variable,最後result的值就會是7
如下实现view透明度渐变效果,使用block可简化代码:
[picChangeViewsetAlpha:0];
[UIViewanimateWithDuration:0.2fanimations:^(void){
[picChangeViewsetAlpha:1];
}];
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;
方法duration参数控制变化快慢,animations后面的为block语法,void (^)(void)表示该block不带参数且无返回参数, ^(void){ } 结构表示一个block的实现体。
block代替delegate传值示例:http://www.cocoachina.com/bbs/read.php?tid=126759