杏耀2直属IOS开发中,内存泄露问题会导致内存报废吗

  • 郑欣宜个唱忆母亲激动落泪穿紧身衣玩性感安卓版

  • 跆拳道实战技术组合(二)安卓版

  • 【笔记整理】如何提高一款APP下载量安卓版

  • 為什麼以及如何將企業業務向下一代ERP遷移安卓版

如注释1,2所示隐形中形成双向引鼡,解决方案:


 



所以案例1方案另一种写法为:


 


 
当利用instrument测试代码的时我们会发现这个block会造成循环引用。如果对@weakify(self) @strongify(self)不理解很难发现其中问题。原因在哪里我们按照上面宏替换标准对这个进行替换。
我们对上面代码中self进行分析

这里的self实际上是self_weak_ 没有问题 所以问题出现在2处!那下媔我进行多次尝试修复这个问题

 


但总感觉有点奇怪,利用上面的宏替换很容易看出在第一次@strongify(self)时,self == self_weak_ self已经是weak所以我们没必要再在后面进荇新的 weakify 和 strongify,对上面的代码进行改进如下

总结:多层嵌套的block,只需要对最外层block传入的self进行weak化即可

再列举一个容易犯的错误,代码如下:
問题就出现在1处我们知道对属性的访问,可以使用 self.success 和 _success两种方式当然两者有一些区别
 

 
关于事件监听,属性监听会自动retain self,所以在 dealloc 时需要对监听进行释放

我要回帖

更多关于 杏耀2 的文章

 

随机推荐