loadView和viewDidLoad的官方API的一些解釋

一、loadView
永遠不要主動調用這個函數。view controller會在view的property被請求並且當前view值爲nil時調用這個函數。如果你手動創建view,你應該重載這個函數。如果你用IB創建view並初始化view controller,那就意味着你使用initWithNibName:bundle:方法,這時,你不應該重載loadView函數。
這個方法的默認實現是這樣:先尋找有關可用的nib文件的信息,根據這個信息來加載nib文件,如果沒有有關nib文件的信息,默認實現會創建一個空白的UIView對象,然後讓這個對象成爲controller的主view。
所以,重載這個函數時,你也應該這麼做。並把子類的view賦給view屬性(property)(你create的view必須是唯一的實例,並且不被其他任何controller共享),而且你重載的這個函數不應該調用super。

如果你要進行進一步初始化你的views,你應該在viewDidLoad函數中去做。在iOS 3.0以及更高版本中,你應該重載viewDidUnload函數來釋放任何對view的引用或者它裏面的內容(子view等等)。


二、viewDidLoad

這個函數在controller加載了相關的views後被調用,而不論這些views存儲在nib文件裏還是在loadView函數中生成。而多數情況下是做nib文件的後續工作。


三 layoutsubviews

看字面也就是佈局子視圖的意思.另外可以用於判定父視圖的bounds發生變化的時候,子視圖在該方法中可以判定父視圖的bounds時候if偶已經發生了變化,如果發生了變化,根據父視圖,子視圖的frame作出相應的調整,經典的情形是橫豎屏的轉換.也經常用於懶加載.


很多人習慣性地將各種view的加載都寫到viewDidLoad之中,這是不太科學的,會影響系統的效率,建議重寫系統的loadView方法,配合方法三使用.

發佈了63 篇原創文章 · 獲贊 3 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章