轉載,原地址為:http://jianyu996.blog.163.com/blog/static/11211455520131226840879/
請尊重原創:
1,無論XIB還是程式碼建立都會呼叫loadView方法。self.view為nil時才會被呼叫。
手工建立檢視時,loadView被呼叫時self.view還為nil。一般在該方法中手工定製view。
XIB建立檢視時,loadView仍會被呼叫、loadView被呼叫時XIB定製的檢視還沒建立完成,若是再覆寫該方法的話、會將XIB定製的檢視覆蓋掉。
所以,純手工定製檢視時,一般在該方法中寫;XIB定製檢視時、不要覆寫該方法。
2,無論XIB還是程式碼建立都會呼叫viewDidLoad方法。
手工建立檢視時,viewDidLoad被呼叫時self.view已經建立完成。可在在該方法中進一步定製檢視。
XIB建立檢視時,viewDidLoad仍會被呼叫,viewDidLoad被呼叫時self.view已經建立完成。可在在該方法中進一步定製檢視。
所以,無論那種方式定製檢視、都可以覆寫該方法。
3,一般情況下呼叫 init方法或者呼叫initWithNibName方法例項化UIViewController, 不管呼叫哪個方法最終都會呼叫initWithNibName方法。
當控制器被initWithNibName:並加入到導航控制器的棧中時,它不會載入nib檔案,直到nib檔案被實際顯示。因此控制器在nib檔案中定
義的內容,例如label,可能還沒有例項化。此時label可能只是一個nil指標,需要額外使用程式碼中實現的屬性來儲存資訊。可以在
viewWillAppear:方法中對niv例項化的物件屬性進行設定。
4, initWithCoder是一個類在IB中建立但在xocdde中被例項化時被呼叫的.比如,通過IB建立一個controller的nib檔案,然後在xocde中通過initWithNibName來例項化這個controller,那麼這個controller的initWithCoder會被呼叫。
5,在使用IB的時候才會涉及到此方法的使用,當.nib檔案被載入的時候,會發送一個awakeFromNib的訊息到.nib檔案中的每個物件,每個物件都可以定義自己的awakeFromNib函式來響應這個訊息,執行一些必要的操作。