簡體   English   中英

Objective-C析構函數與ARC

[英]Objective-C destructor with ARC

我正在嘗試通過覆蓋dealloc在Objective-C類中創建一些清理代碼:

-(void)dealloc {
    //cleanup code
    [super dealloc];
}

雖然我不能這樣做,因為啟用ARC時編譯器不允許[super dealloc] 有沒有我可以使用的替代方案?

過渡到ARC發行說明 (強調我的):

如果需要管理除釋放實例變量之外的資源,則可以實現dealloc方法。 您不必(實際上您不能)釋放實例變量,但您可能需要在系統類和未使用ARC編譯的其他代碼上調用[systemClassInstance setDelegate:nil]。

ARC中的自定義dealloc方法不需要調用[super dealloc](它實際上會導致編譯器錯誤)。 鏈接到super是由編譯器自動執行的。

所以你在使用ARC時可以在dealloc進行同樣的清理,只是不要調用super

當ARC處於活動狀態時,您根本不會調用[super dealloc] ARC會為你做這件事。 或者,您可以使用prepareForDealloc方法,該方法允許您調用super並從基類中的dealloc中調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM