2012-05-17 38 views
-2

可能重複:
when is the dealloc method called?何時調用dealloc,它是如何工作的?

當被稱爲dealloc方法?它是否被自動調用?

如果我寫

UIButton *Btn = [UIButton alloc]; 
[Btn release]; 

則是dealloc現在叫怎麼一回事,因爲引用計數爲零?

如果不是,那麼何時以及如何工作?什麼是super

當它被調用時,我發佈的內容是否會在dealloc內發佈?例如,假設調用dealloc,並且我們收回btn1btn2,但btn2的引用計數仍然是兩個。當調用dealloc時,是否還發布了btn2並且其引用計數爲1,還是變爲零?

+1

需要注意的是,在調用'alloc'時可能根本沒有任何類型的分配;它是一個實現細節。例; '[NSString alloc]'不分配任何東西。 – bbum

回答

2
  • dealloc將被自動地發送到不具有更多的業主(即每個對象保留它,release d它)
  • [super dealloc]調用超的dealloc方法(對於當前對象的父類的對象)。由於幾乎Cocoa框架中的每個類都至少從NSObject進行了分類,因此這條線對於正確釋放內存是必需的。
相關問題