對於視圖控制器,你在Interface Builder中設置的任何網點必須釋放 和設爲零viewDidUnload,並且還必須在的dealloc被釋放。編程創建子視圖和viewDidUnload
(參見:When should I release objects in viewDidUnload rather than in dealloc?)
其中一個最重要的原因,實施[viewDidUnload]是的UIViewController子類通常也含有視圖層次結構中的各種子視圖擁有引用。這些屬性可能已經通過IBOutlets從筆尖加載時設置,或內部編程loadView[加重點],例如。
我的問題是,我們真的需要實現viewDidUnload對於在的loadView編程方式創建(無界面生成器)在視圖層次子視圖?
這是完全正確的!這個想法是,你的視圖控制器應該能夠通過許多loadView(+ viewDidLoad)/ viewDidUnload-Cycles而不會泄漏內存或訪問殭屍。最好的例子是標籤欄控制器中的VC - 它們被分配一個,然後在點擊標籤時通過loadView/viewDidUnload –
不應該在自定義loadView方法中調用[super loadView]。代碼如下:self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen] .applicationFrame] autorelease]; –
想解釋爲什麼五寶?我從來沒有調用[super loadView]的問題。 – hundreth