美文网首页
__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下的主要事项

    1、在ARC下,成员变量使用_block修饰,在block里面访问会造成retain cycle,不管是用self...

  • __weak & __block

    1.__block:可以在ARC、MRC下使用 __weak:只能在ARC下使用 2.__block:可以修饰对象...

  • 面试

    1. assign vs weak, __block vs __weak strong 和 weak 是在arc后...

  • 基础题

    block和weak的区别 block可以修饰对象和基本数据类型 weak只能修饰对象,也只能在ARC下使用 bl...

  • Block:循环引用

    Block循环引用 ARC 模式下 用__weak、__unsafe_unretained解决__weak:不会产...

  • __block和__weak的区别

    __block和__weak的区别 __block 在ARC和MRC下都可以使用,既可以修饰对象,也可以修饰基本数...

  • block 的修饰符

    _block & _weak: ARC下 在block代码块中也会用类似代码来修饰变量,例如:__weaktype...

  • Block 04 - 循环引用

    Block 04 - 循环引用 在 ARC 环境下解决循环引用 使用 __weak、__unsafe_unreta...

  • 小知识总结:

    __block 和 __weak 的区别: __block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还...

  • #define Weakself(weakSelf) __we

    // 不知道这行代码的使用场景的同学你该去自习看看ARC的注意事项和Block的使用了 // 1、__weak _...

网友评论

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

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