永遠不要主動調用這個函數。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等等)。
這個函數在controller加載了相關的views後被調用,而不論這些views存儲在nib文件裏還是在loadView函數中生成。而多數情況下是做nib文件的後續工作。
三 layoutsubviews
看字面也就是佈局子視圖的意思.另外可以用於判定父視圖的bounds發生變化的時候,子視圖在該方法中可以判定父視圖的bounds時候if偶已經發生了變化,如果發生了變化,根據父視圖,子視圖的frame作出相應的調整,經典的情形是橫豎屏的轉換.也經常用於懶加載.
很多人習慣性地將各種view的加載都寫到viewDidLoad之中,這是不太科學的,會影響系統的效率,建議重寫系統的loadView方法,配合方法三使用.