iOS开发之ARC 3ARC下单对象的内存管理

1. ARC 工作原理详述

   ARC是OC编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只不过是在代码编译时为你自动在合适的位置插入release或autorelease.

ARC的判断准则:

   只要没有强指针指向对象,对象就会被释放。

  注意:当使用ARC的时候,暂时忘记“引用计数器”,因为判断标准变了。

   代理示例:

  情况1:

    代码如上,当程序运行到22行,Car类被释放。原因:

    在15行到21行,都有强指针指向Car创建的类bigBen,当出了@autoreleasepool的大括号,指针bigBen作为局部变量被释放了,所以就没有强指针指向Car创建的类,所以Car类就被释放了。


   情况2:

  

      指针bigBen在第17行被置为空了。

     那么,运行17行以后,指针的指向发生改变,Car对象就被释放了,而且是立即释放了,而不是出了@autoreleasepool的大括号才被释放的,因为没有强指针指向它了。

   情况3:

   

    添加了第18行代码。

    这样执行到22行时,Car对象不会被释放,因为还有一个强指针 bmw指向它。

   情况4:

  

    正如注释中所写,要注意一点,weak指针会在对象被释放后被置为空。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容