对于dealloc函数有两种作法,函数
一个是直接将实例变量release掉:spa
-(void)dealloc指针
{调试
[subject release];orm
[super dealloc];对象
}内存
另外一种是将变量relsease 掉再将它指向nil;it
-(void)dealloc变量
{object
[subject release]
subject=nil;
[super dealloc];
}
两种方法结果是一致的,可是有些许的差异。
变量在被release掉后,系统将该内存标识为可用,nil只是起到重置指针的做用。
可是在object-c中给nil对象发送消息是,什么也不会发生,这样在调试的时候,很难找到出错的地方,因此
在调试阶段最后用第一种,为了上线的时候用第二种,
能够经过宏定义
#if DEBUG
#define MCRelease(x) [x release]
#else
#define MCRelease(x) [x release], x = nil
#endif