我知道這個問題曾經討論過很多次,但我有一個簡單的問題。我知道這個:dealloc和發佈問題
如果我分配一個對象,我擁有它並且必須釋放它。所以我必須做的:
ran *me = [[ran alloc] init];
//do somthing
[me release];
所以現在,保留計數爲0,我釋放後運行對象。
但我也讀過,當一個對象的保留計數爲0時,正在調用dealloc方法。
所以我的問題是,在我將保留計數降爲0之後,我是否必須再次釋放dealloc中的對象?
-(void)dealloc
[me release];
還是說第一個版本做的工作?否則,爲什麼要調用dealloc?如果保留計數= 0,我們確定沒有?
非常感謝。
爲什麼保留計數可能是2,3,4?每次我分配它,我釋放它,所以它應該永遠不會更多,除非在alloctaion後,我有另一個,所以它的2,然後dealloc被稱爲?如果是這樣,在保留完全dealloc的次數之後?是不是確切的科學?我不知道什麼時候?所以如果每次分配都在某個時候釋放,我確定嗎? – Curnelious
@Rant - 也許在這種情況下,你只有1 ..但是一般來說在編程語言中,你當然可以[object retain];將計數增加到2,3。當你達到0時,無論你如何到達那裏,都會調用dealloc。但不是立即 - 它發生在運行時的閒暇時間。關鍵是,是的,計數必須變爲0才能釋放內存,並在這種情況發生時調用dealloc。 – Nektarios
謝謝,但如果計數爲0,所以系統內存是好的,爲什麼dealloc被調用? 0意味着 - 沒有內存泄漏?蘋果文件只是不清楚。 – Curnelious