對於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