2010-07-26 30 views
0

我是否必須「釋放」我聲明爲屬性屬性爲「retain」和「nonatomic」的IBOutlets的UI對象?我問,因爲我有一個UI var聲明爲如此...我是否必須「釋放」我聲明爲屬性爲「retain」和「nonatomic」的IBOutlets的UI對象?

@interface MyViewController : UIViewController 
{ 
IBOutlet UILabel *lblStatus; 
} 

@property (retain, nonatomic) IBOutlet UILabel *lblStatus; 

@end 

和我的dealloc是這樣的...

- (void)dealloc 
{ 
    //[lblStatus release]; 
    [super dealloc]; 
} 

,並與lblStatus UI VAR註釋掉,儀器似乎並不當我將視圖從導航堆棧中彈出時檢測任何泄漏。

在此先感謝您的幫助!

回答

0

既然他們被保留,是的,你有責任釋放他們。通常情況下,與視圖控制器,應在-viewDidUnload發生,像這樣:

- (void)viewDidUnload 
{ 
    self.lblStatus = nil; 
    [super viewDidUnload]; 
} 

(設置屬性的值,用合成retain訪問,將實例變量設置爲新值之前釋放舊值。)

+0

謝謝,諾亞!如果我在dealloc方法中取消註釋「釋放」聲明,那麼是否也足夠了?另外,關於爲什麼樂器不會在「發佈」聲明中提到漏洞的任何想法都被註釋掉了?再次感謝。 – BeachRunnerFred 2010-07-26 21:04:13

+0

不完全。如果您的視圖被卸載並重新加載 - 例如,如果您的視圖控制器離開屏幕,獲得內存警告,並在稍後再次出現在屏幕上 - 則它會被重新實例化,並且任何保留的插座(如標籤)可能會泄漏。 – 2010-07-26 21:23:16

+0

你確定嗎? – 2010-07-27 10:07:04

相關問題