美文网首页
Block内存泄露你知道吗

Block内存泄露你知道吗

作者: 秀才不才 | 来源:发表于2015-11-18 16:29 被阅读514次

(不会首行缩进YoY,好像也没必要 )正文:以为用了ARC 静态内存分析 Instruments 检测没有问题就真的没有问题吗,错啦。大多数的内存问题都可以通过静态分析和Instrument Leak工具检测出来,但是有种block引用循环是难以检测的

在Block中用到self(self特指UIViewController),需要用_block或者_weak修饰(MRC与ARC的区别),因为Block调用会对其里面的对象引用计数加1,如果你不确定你调用的Block是否会产生循环引用的话,最好用_block 或者_weak修饰.

  __block DNWThirdVideoSubclassViewController *otherSelf = self;  
  [_videoPlayView changeViewBackGround:^{  
     
     [otherSelf pushDNWWedViewController:_thirdData.web_url];  
  }]; 

这个也有着引用的问题。*thirdData它是被self所持有,一次释放操作是放在dealloc中,也就是self被释放,_thirdData也释放.在Block中,调用了_thirdData,虽然没有用self.thirdData,但是正如前面所说,它是被self持有,编译访问_thirdData时,会找到持有它的self,对其引用计数加1,所以这里就算没有用到self,self的引用计数也被加1了,这也说明并不是没显示的调用self就不会对其引用计数加1。

[otherSelf pushDNWWedViewController:otherSelf.thirdData.web_url];OK

有错砸砖啊!!!!!!

相关文章

  • Block内存泄露你知道吗

    (不会首行缩进YoY,好像也没必要 )正文:以为用了ARC 静态内存分析 Instruments 检测没有问题就真...

  • 文章目录

    block block内强引用导致的内存泄露 NStimer UITableView滚动式NSTimer停止计数 ...

  • 项目中优化细节

    一.内存优化 1.减少内存泄露。如Timer,Delegate,Block,CoreFoundation对象(C对...

  • iOS自问自答:总结内存管理与优化

    目录 ARC下如何避免内存泄露?如何检测? 你是如何做内存优化的? __block你知道多少?在什么时候使用? 你...

  • iOS 底层 day29 循环引用 和 内存泄露

    一、UIView 的 block 写动画 1. 请问下面代码有内存泄露吗?有循环引用吗? 没有内存泄露,也没有循环...

  • iOS - 性能优化

    内存方面 检测内存泄露 block使用上的强强循环导致页面不释放 :规范block使用,避免循环不释放 创建很多临...

  • iOS 性能优化

    列举在项目开发中可能遇到的优化点 1、内存泄露检测可能出现内存泄露的地方:循环引用,block强引用,NSTime...

  • iOS开发-Block容易造成循环引用

    一 、Block的内存泄露体现block在copy时都会对block内部用到的对象进行强引用(ARC)或者reta...

  • 常见内存泄露

    一, 常见内存泄露种类 block 循环引用 及 delegate 的强引用.单例对 block 进行了 copy...

  • iOS 内存泄露监测

    iOS可能存在的内存泄露: block 循环引用。当一个对象有一个block属性,而block属性又引用这个对象本...

网友评论

      本文标题:Block内存泄露你知道吗

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