标签:
内存管理 (app开发)
栈区stack:先进后出。出栈释放。
堆heap:程序员控制其释放。
内存泄露:没有被对象指针立即释放的内存。
有一块内存,没有指针引用,系统不释放,就会造成内存浪费的情况。
ARC 内存自动管理技术 Auto Recefence Count 自动引用技术
ARC基础原则:内存无人引用,即立即释放。
手动内存管理原则:谁申请内存,谁负责释放。
这里区别一下引用 和 指向 的区别。
指向:指针里面的值是内存的地址;
引用:内容里面会有一个计数器区间(结构体),当计数器为0时,内存释放。
关键字
_strong :强引用。被强引用类型的对象指针指向的内存,绝对不会释放。 绝大多数情况都用_strong.
_weak归零弱引用:如果内存被归零弱引用类型的对象指针引用。该内存释放情况,不受此类型对象指针的影响。当对象指针指向的内存释放时,该对象指针指向自动值nil(归零)。
归零弱引用的应用:delegate 和 block模块里的强引用循环;(__weak__block RoomG * copy_self = self; 可以用来打破block的强引用循环)
_unsage_unretained:弱引用。比较危险的用法,在app开发中,一律可以用归零弱引用替换。
_autoreleasing 不能理解为自动释放类型!它需要自动释放池与之配合使用,让对象指针指向的内存在受控情况下释放。
被_autoreleasing指向的内存,在出自动释放池时释放。作用:延迟释放,提前释放(内存激增) 便利构造器中比较常见。
标签:
原文地址:http://www.cnblogs.com/skyfusheng/p/4742284.html