块代码的概念——是一个数据类型,可以被当做参数传递
默认情况下,不允许在块代码内部修改外部变量的数值
Block可以使用在定义之前声明的局部变量
int i = 10;
void(^myBlock)() = ^{
};
i = 100;
myBlock();
注意:
在定义Block时,会在Block中建立当前局部变量内容的副本(拷贝)
后续再对该变量的数值进行修改,不会影响Block中的数值
如果需要在block中保持外部变量的数值变化,需要使用__block关键字
使用__block关键字后,同样可以在Block中修改该变量的数值
局部变量默认都是强引用的,离开其所在的作用域之后就会被释放
使用__weak关键字,可以将局部变量声明为弱引用
__weak DemoObj *weakSelf = self;
提示:
iOS5.0以上版本使用__weak
iOS5.0以下版本使用__unsafe_unretained