码迷,mamicode.com
首页 > 其他好文 > 详细

ARC模式下的内存泄露问题

时间:2015-11-19 08:26:53      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

ARC模式下的内存泄露问题

iOS提供的ARC 功能很大程度上简化了编程,让内存管理变得越来越简单,但是ARC并不是说不会发生内存泄露,使用不当照样会发生。

以下列举两种内存泄露情况:

死循环造成的内存泄露

  • 若一个ViewController中存在无限循环,就会导致即使ViewController所对应的View消失掉了,ViewController对象也不能够被释放。

    此问题通常发生在animation处理中:

    eg:

    CATransition *transition = [CATransition animation]; transition.duration = 0.5; tansition.repeatCount = HUGE_VALL; [self.view.layer addAnimation:transition forKey:"myAnimation"];

    以上示例中,animation重复设成HUGE_VALL(一个很大的数值),基本上等于无限循环了。

    解决的办法是:当ViewController关掉的时候,停止这个animation。

    eg:

    -(void)viewWillDisappear:(BOOL)animated { [self.view.layer removeAllAnimations]; }

循环参照造成的内存泄露

  • 甲有一个属性参照为乙,乙有个属性参照为甲,如果甲和乙都为strong参照的话,两个对象都是无法释放的。

    这种问题通常发生于把delegate声明为strong属性了。

    eg:

    @interface ExampleViewController @property (nonatomic, strong) ExampleClass *exampleClass; @end @interface ExampleClass @property (nonatomic, strong) ExampleViewController *delegate; @end

    以上这种问题解决办法只需把ExampleClassdelegate属性的strong改为assign即可。

ARC模式下的内存泄露问题

标签:

原文地址:http://www.cnblogs.com/YKiOS/p/4976474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!