美文网首页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