![](/img/trans.png)
[英]Do we need to release block variable manually in dealloc method under Obj-C ARC mode?
[英]Do I need use dealloc method with ARC?
所以,我上課了:
@interface Controller : NSObject
{
UILabel* fileDescription;
}
@property(strong, nonatomic) UILabel* fileDescription;
我是否需要使用方法dealloc,其中屬性fileDescription將等於nil?
例如:
-(void)dealloc
{
fileDescription = nil;
}
如果沒有,誰將解雇fileDescription使用的內存?
通常,您不需要提供子類dealloc
方法,因為ARC管理實例變量的生命周期。
但是, 除了釋放對象之外 ,執行清理可能很有用,例如刪除觀察者或干凈地關閉網絡連接。 因此,您可以在ARC下dealloc
,但不允許您在子類方法中調用[super dealloc]
。
但是,在您的特定情況下,它不是必需的。
沒有。
你不需要ARC
dealloc
方法。
但是,如果您想在視圖被解雇或釋放時執行一些清理任務。 這是最好的地方,在這種情況下你可以實現它。
例如:
您正在視圖中運行計時器,它正在更新您的視圖。 當您解除視圖時,您需要停止該計時器。 在那種情況下你可以使用dealloc方法並在那里停止計時器。
類似於NSNotification
觀察員。
如果您使用ARC。
不需要使用dealloc和release,編譯器知道你的屬性和對象是強/弱的,所以它會管理它。
編輯:
如果你使用像CG...
& CF...
這樣的coreframework對象,則需要dealloc
方法。 即使您為需要刪除它的通知創建觀察者, dealloc
也是removeObserver的最佳位置。
Ans是NO因為ARC不需要dealloc。
當您使用ARC時,您不必使用dealloc
Complier將根據屬性,變量或控件的范圍設置autoreleasePool。 它會release
內存。 有不同類型的autoreleasepool我們通常可以將它們定義為功能級別,類級別等等。希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.