iOS中block的使用注意

来源:互联网 发布:mac a1181 t7200 编辑:程序博客网 时间:2024/05/21 14:06

块代码的概念——是一个数据类型,可以被当做参数传递
默认情况下,不允许在块代码内部修改外部变量的数值


Block可以使用在定义之前声明的局部变量

int i = 10;
void(^myBlock)() = ^{
    NSLog(@"%d",i);
};
i = 100;
myBlock();

注意:
在定义Block时,会在Block中建立当前局部变量内容的副本(拷贝)
后续再对该变量的数值进行修改,不会影响Block中的数值
如果需要在block中保持外部变量的数值变化,需要使用__block关键字
使用__block关键字后,同样可以在Block中修改该变量的数值


局部变量默认都是强引用的,离开其所在的作用域之后就会被释放

使用__weak关键字,可以将局部变量声明为弱引用
__weak DemoObj *weakSelf = self;
提示:
iOS5.0以上版本使用__weak
iOS5.0以下版本使用__unsafe_unretained

0 0
原创粉丝点击