美文网首页iOSiOS 艾欧艾斯
iOS -- block 强引用解决

iOS -- block 强引用解决

作者: iOS_成才录 | 来源:发表于2015-11-12 19:20 被阅读789次

    一、block 强引用 解决

    • 1.在block里面不用使用self,解决方案:推荐 __weak typeof(self) weakSelf = self(弱引用);
    • 2.强引用bug
      • 如果你发现你的控制器pop后任然不会销毁,可能是你在block中使用了self从而强引用了控制器。
    • 3.但不是所有的block里面就需要处理里面的变量,因为有的block声明周期就很短,执行完后就不存在了就不用处理,如UIView的动画。
    • 4.为了方便以后使用我们可以将 __weak typeof(self) weakSelf = self语句抽取为宏

    // 宏抽取

    define JPWeakSelf __weak typeof(self) weakSelf = self; // (弱引用)

    
    ###二、 block 使用注意点:
    + 存在强引用问题,解决方案:同上
    ![Snip20150906_22.png](http:https://img.haomeiwen.com/i831339/273c4acc036765f6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ![Snip20150906_23.png](http:https://img.haomeiwen.com/i831339/a09ae38aaeeab0ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    相关文章

      网友评论

      • hhgvg:请问一下如果是分了两个方法调用呢 第二个方法也要weak下吗
      • Jennifer_鑫:下面的两个例子不懂,他是分别在两个方法里面嘛?,一个是修改之前的,一个是修改以后的?

      本文标题:iOS -- block 强引用解决

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