我想創造我的Objective-C類的一些清理代碼,通過覆蓋的dealloc:Objective-C的析構函數與ARC
-(void)dealloc {
//cleanup code
[super dealloc];
}
雖然我不能這樣做,因爲[super dealloc]
是由編譯器時,ARC禁止已啓用。有沒有其他的方法可以使用?
我想創造我的Objective-C類的一些清理代碼,通過覆蓋的dealloc:Objective-C的析構函數與ARC
-(void)dealloc {
//cleanup code
[super dealloc];
}
雖然我不能這樣做,因爲[super dealloc]
是由編譯器時,ARC禁止已啓用。有沒有其他的方法可以使用?
從Transitioning to ARC Release Notes(重點煤礦):
如果你需要管理比釋放實例變量的其他資源,您可以實現一個dealloc方法。您不必(實際上不能)釋放實例變量,但是您可能需要在系統類和其他未使用ARC編譯的代碼上調用[systemClassInstance setDelegate:nil]。
ARC 中的自定義dealloc方法不需要調用[super dealloc](它實際上會導致編譯器錯誤)。超鏈接是由編譯器自動執行的。
所以你可以使用ARC時做同樣的清理在dealloc
,只是不叫super
。
當ARC處於活動狀態時,您不需要撥打[super dealloc]
。 ARC會爲你做到這一點。或者,您可以使用prepareForDealloc
方法,該方法允許您撥打super
,並在基類中調用dealloc
。