有時我在objective-c中看到了這種類型的編碼。爲什麼在釋放後將_imageView設置爲零。爲什麼在釋放對象後使用'nil'
- (void)dealloc {
[_imageView release];
_imageView = nil;
[super dealloc];
}
有時我在objective-c中看到了這種類型的編碼。爲什麼在釋放後將_imageView設置爲零。爲什麼在釋放對象後使用'nil'
- (void)dealloc {
[_imageView release];
_imageView = nil;
[super dealloc];
}
這是爲了確保您不會嘗試重複使用剛發佈的對象。
通過將其設置爲nil
,您可以確保將來丟棄的任何消息(標準nil
對象的行爲)不會造成問題。
只因爲這是安全的做法。
在dealloc中,除非你使用線程,否則它沒有什麼意義,但否則每當你將nil賦給一個對象(除非它是一個屬性)時總是很好。
據我所知,這是不必要的dealloc。但是,在釋放任何其他方法中的對象時,指針仍然保留,但它指向的對象將不再存在,從而在向其發送消息時導致崩潰。
通過將指針設置爲零,您確定發送給它的任何消息都將被忽略而不會導致應用程序崩潰(或導致奇怪的行爲)。
在旁註中,通常不需要在'dealloc'方法中將ivar設置爲零。除非一個人用超類ivars做黑客東西。 – JustSid 2011-12-28 09:38:20