第三章 Managing Mem With Arc 笔记


一,栈

       当一个方法运行时,会在栈中分配内存,栈的管理符合先入后出的原则;


二,堆

      对象的存储区域


三,ARC

        ios的垃圾内存回收器


四,Object   Ownership

         函数的局部变量会增加引用计数;

         对象的成员变量会增加引用计数


五,释放引用计数

        让对象失去引用;

        比如对象的引用指向另外一个对象或者引用指向nil;

        引用本身被释放,或者对象从数组中移除;


六,弱引用和强引用

        弱引用被用于解决强引用环的问题;  即是2个或2个以上对象互相引用对方,导致对象无法被释放内存

        弱引用不会增加引用计数,在对象释放时,弱引用值会被设为nil;

        

        ios提供了工具检测是否出现强引用环


七,property

        创建对象的实例变量的便利方法; 

        创建属性后,编译器会自动创建带_的实例变量,并自动创建set和get方法



八,Property attributes

       1,线程安全

              nonatomic or atomic

       2,Read/write attribute

       3,内存管理相关

             copy,拷贝了一份内存,原有的对象不会增加或者减少引用计数

             unsafe_unretained,一般用于基本数据类型


九,自定义set/get方法

         当set、get方法都被覆盖后,加_的实例变量也不会被创建



 



























你可能感兴趣的:(第三章 Managing Mem With Arc 笔记)