2011-03-04 76 views
2

據我所知,實例變量在dealloc釋放(如下圖所示),但什麼時候是它叫什麼名字?是否所有實例變量都是在應用程序關閉時發佈的,或者是否有可接受的方式讓它們在不需要時單獨釋放?什麼時候(void)dealloc在AppDelegate中被調用?

- (void)dealloc { 
    [fred release]; 
    [wilma release]; 
    [barney release]; 
    [betty release]; 
    [super dealloc]; 
} 
+0

[退出應用程序時正常執行dealloc方法是否可能出現重複?](http://stackoverflow.com/questions/5079563/does-dealloc-method-being-executed-normally-when-quitting-the-應用程序) – Vladimir 2011-03-04 09:55:57

+0

謝謝,@Vladimir,但我沒有那麼多興趣它是否叫這麼多,因爲知道具體的時候,它被調用。 – 2011-03-04 10:04:30

+1

僅僅是明確的 - 你忘了'[超級的dealloc]'在方法結束) – Eimantas 2011-03-15 04:24:34

回答

6

像任何其他對象,當沒有其他對象保留它的應用程序委託將被釋放。這是非常不尋常有一個應用程序委託直到應用程序終止周圍不沾,和其他人指出,應用可懶得釋放和釋放任何退出之前。

我認爲這是一個安全的賭注,如果沒有比其他應用程序對象保留了它,你給應用程序一個新的委託應用程序委託將被釋放。除了這種不尋常的情況,應用程序委託的-dealloc方法可能根本不會被經常調用。然而,這並不意味着你不應該正確地實現它 - 這是預期的行爲,並且事情可能會在未來的iOS版本中輕易改變。

相關問題