美文网首页
ARC内存泄露的情况

ARC内存泄露的情况

作者: peal | 来源:发表于2016-03-15 23:09 被阅读121次
    ARC(Automatic Reference Counting),是iOS 5推出的新功能。为了解决MRC管理下的内存泄漏,野指针等问题。

    ARC虽然不需要手动去调用retain和release消息,编译器会自动在合适的位置为我们添加这些代码,但是ARC还是存在内存泄露的。
    比如

    .循环参照

    A有个属性参照B,B有个属性参照A,如果都是strong参照的话,两个对象都无法释放,常见于deleage声明为strong,实际应该用assign。还有就是block中使用了当前对象,实际应该把当前对象复制给一个局部变量然后用__block修饰。

    .死循环问题

    比如如果某个ViewController中有无限循环,也会导致即使ViewController对应的view关掉了,ViewController也不能被释放,这种问题常发生于animation处理。

    .循环引用的基本上有三个常见场景:
    .定时器(一方面,NSTimer经常会被作为某个类的成员变量,而NSTimer初始化时要指定self为target,容易造成循环引用。 另一方面,若timer一直处于validate的状态,则其引用计数将始终大于0。)
    .block(引用当前对象)
    .代理(assign)

    相关文章

      网友评论

          本文标题:ARC内存泄露的情况

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