/*
为什么要进行内存管理?
移动色别的内存空间及其有限,如果不进行有效的管理,会导致设备的内存空间不足
苹果设备,ios对app会有内存警告
20M 警告一次
45M 警告一次
120M 直接闪退
3,内存管理的范围:
主要时继承了NSObject类的对象?
为什么继承了NSObjetct 类的对象需要进行内存管理
因为对象存储在内存的堆区而堆区需要程序员自己去管理的空间
内存管理的原理及分类:
1,对象的所有权及引用计数
对象所有权的概念:
(只有一个对象还在使用它)
任何对象都可能拥有一个或者多个所有者,只要一个对象至少拥有一个所有者,它就会继续存在
任何对象的所有权,谁还有拥有它 任何自己创建的对象的都归自己所有
2,对象的引用的计数
每个对席那个都有一个自己的引用计数起,用来保存当前对象还有多少个使用者,占用8个字节
3,对引用计数起的操作
给对象增加或者减少对象的所有者
[对象 retain];可以让对象的所有者+1 计数器+1 该方法返回对象本身
[对象 release];让对对象的所有者-1 计数器-1 (并不是代表释放对象)
如果对象的引用计数器为0,这要释放该对象,不为0,则存在
[对象 retainCount] retainCount消息:获得对象当前的引用计数器值 %lu %tu
4,对象的销毁
当对象的引用计数器为0的时候,那么这个对象就要释放
如果释放的时候,系统会自动的先调用了对象的dealloc方法
Dealloc 对象的临终遗言多方法,不能手动调用
*/
|
|