1、引用计数器: 用来保存当前对象有几个东西在使用它(数字) 2、引用计数器的作业: 用来判断对象是否应该回收内存空间(如果对象不等于nil,当引用计数器为0,此时要回收对象的内存空间) 3、引用计数器的操作: retain 使得引用计数器+1 release 使得引用计数器-1 retainCount 得到引用计数器的值 4、对象被释放的时候,会有“临终遗言”(会调用该对象的dealloc的方法) 注意: 1)dealloc方法是NSObject的,一般我们要重写 dealloc 方法 2)在dealloc方法内部,要调用 [super dealloc]; 5、手动内存管理: MRC:手动内存管理 ARC:自动内存管理 我们创建一个项目,此时默认的是ARC(自动内存管理),把项目从ARC模式改成MRC 给nil 发送任何消息,都没有效果 Dog *d=[[Dog alloc] init]; //1 [d release]; // 0 避免使用僵尸对象的方法是,对象释放以后,给对象赋值为nil d = nil; //nil给对象赋值 Nil 类对象赋值 [d retain];
|