Block内存泄露你知道吗

(不会首行缩进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内存泄露你知道吗)