[英]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.