美文网首页
自动引用计数ARC

自动引用计数ARC

作者: 方方1307007 | 来源:发表于2016-02-28 11:39 被阅读0次

    自动引用计数ARC,OC默认的内存管理机制,针对堆上的对象,由编译器自动生成操作引用计数的指令(retain或release),来管理对象的创建与释放

    哪些对象受ARC管理

    OC对象指针

    Block指针

    使用_attribute_((NSObject))定义的typedef

    哪些对象不受ARC管理

    值类型

    使用其他方式分配的堆对象(如使用malloc分配)

    非内存资源

    新创建一个引用类型对象,引用计数为1

    对象引用计数增1,retain操作:

    将对象引用赋值给其他变量或常量;

    将对象引用赋值给其他属性或实例变量;

    将对象传递给函数参数,或返回值;

    将对象加入集合中

    对象引用计数减1,release操作:

    将局部变量或全局变量赋值为nil或其他值;

    将属性赋值为nil或其他值;

    实例属性所在的对象被释放;

    参数或局部变量离开函数;

    将对象从集合中删除

    引用计数变0时,内存自动被释放

    自动释放池Autorelease Pool

    autorelease可以将release的调用延迟到自动释放池被释放的时候

    什么时候要手工管理Autorelease Pool

    编写的程序不基于UI框架,如命令行程序;

    在循环中创建大量的临时对象,需要更早地释放,避免临时对象聚集导致内存峰值过大;

    在主线程之外创建新的线程,在新线程开始执行处,需要创建自己的Autorelease Pool;

    可以嵌套使用Autorelease Pool

    相关文章

      网友评论

          本文标题:自动引用计数ARC

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