我有許多保留的IBOutlets,從XIB加載的視圖。可可 - 快速發佈所有IBOUtlets
我已經讀過,他們必須在控制器的dealloc方法被調用時被釋放。
我可以使用一個循環來做到這一點(還要避免單獨釋放每個插座)?
像
for(UIView *v in self.view.subviews){
[v release];
v=nil;
}
?
另外,在那之後,我是否應該釋放視圖?
我有許多保留的IBOutlets,從XIB加載的視圖。可可 - 快速發佈所有IBOUtlets
我已經讀過,他們必須在控制器的dealloc方法被調用時被釋放。
我可以使用一個循環來做到這一點(還要避免單獨釋放每個插座)?
像
for(UIView *v in self.view.subviews){
[v release];
v=nil;
}
?
另外,在那之後,我是否應該釋放視圖?
這隻有在你確實保留了每一個子視圖時纔有意義,即使這樣看起來像是在尋找麻煩 - 如果你想改變你的.xib,你必須記得更新你的代碼以及。並且在筆尖中也可能存在可以連接到插口的非視圖對象,如視圖控制器。
在iPhone或iPad大小的屏幕上只能看到很多視圖,所以很難想象你有幾十個插座。我認爲這裏要謹慎的做法是簡單地分別釋放每一個。這是iOS開發人員期望看到的,並且不會比使用循環慢。這將是更多的代碼,是的,但代碼會很容易理解。
self.view
自動發佈在UIViewController
解除分配和子視圖,如果不保留您的代碼。
你應該重新閱讀蘋果文檔的內存管理的章節...;)
我寫了像releaseVars
函數,該函數的變量地址,釋放他們並設置爲nil
。這節省了一些代碼行,但仍然需要手動處理它們。
你有沒有試過你發佈的代碼,它的工作?我建議不要這樣含糊不清,只是明確地發佈你必須發佈的內容,不能有很多。 – mbehan 2011-04-01 16:16:16
我試了一下,我得到了以下錯誤*** - [CALayer發佈]:消息發送到釋放實例0x4c65f10我的擔心是找到一種方法,我可以在每個viewController中使用。 – Lorenzo 2011-04-01 16:18:07
你剛纔回答了你的問題。 – mbehan 2011-04-01 16:23:06