美文网首页
__block 和 weak 在ARC下的主要事项

__block 和 weak 在ARC下的主要事项

作者: yohen | 来源:发表于2017-02-21 11:34 被阅读7次

    1、在ARC下,成员变量使用_block修饰,在block里面访问会造成retain cycle,不管是用self.xxx或者_xxxx;
    使用weak不会造成retain cycle
    2、在ARC下,外部局部变量使用_block,会根据外部变量的类型,在block会进行一次拷贝,值类型就会拷贝值,指针类型就是改变指向的地址,不会造成cycle

    3、MRC中使用block,为了避免在block中retain外部的变量导致引用计数的增加,我们往往要在block中使用的变量前加上 __block 关键字,这样就不会retain了,比如__block typeof(self) weakSelf = self;

    4、一般用weak修饰就可以解决问题 block中如果执行耗时操作或者是VC释放之后任然需要完成的操作 block外部用weak修饰之后 在block中还需要用strong再做一个强引用

    相关文章

      网友评论

          本文标题:__block 和 weak 在ARC下的主要事项

          本文链接:https://www.haomeiwen.com/subject/lxnywttx.html