内存管理环境:MRC(手动)
内存管理的范围:NSObjective对象,(原因:OC对象是存储在堆内存中,非OC对象存储在栈中)
内存管理:retain - 引用计数加1, release - 引用计数减1 retaincount - 查看当前引用计数,即指针个数
dealloc方法:在对象引用计数归零时被调用,释放内存,dealloc方法有没有被调用,就可以判断内存有没有被释放
注:1.dealloc就是对象的遗言,一旦重新了dealloc方法,就必须调用[super dealloc],并且放在最后面被调用
2.不能直接调用dealloc方法,一旦对象被回收,其占用的内存就不能再使用,坚持使用会出现程序崩溃(即野指针)
概念:1 僵尸对象:已经被销毁的(不能再使用的)对象
2 野指针:指向僵尸对象的指针,给野指针发消息会报EXC_BAD_ACCESS错误
3 空指针:没有指向内存空间的指针,里面存的对象是nil.也是0,给空指针发消息是没有任何反应
避免野指针出现的方法:在对象被销毁之后,将指向对象的指针变为空指针
set方法的内存管理
- (void)setCar:(Car*)car
{
if(car != _car)
{
// 对旧车做一次release
[_car release ];
// 对新车做一次retain
[_car retain ];
}
}