awakeFromNib

原文鏈接:點擊打開鏈接

nib 加載結構時   發送一個awakeFromNib消息告訴每個對象重建一個nib 歸檔,但只有在所有的檔案中的對象
已加載和初始化。當一個對象接收awakefromnibmessage,這是保證其所有出口和行動連接已經建立。

你必須調用awakefromnib  super實施給父類的運行的機會去做額外的初始化工作。雖然這種方法的默認實現不執行任何操作,許多UIKit類提供非空的實現。你可以叫super 實現在任何一點你自己的awakefromnib方法裏。

實例化過程中,存檔中的每個對象未歸檔然後初始化的方法適合於它的類型。符合nscoding協議對象(包括所有子類和處理)正在用他們的initwithcoder初始化:方法。不符合nscoding協議所有的對象都是使用init方法初始化。在所有對象被實例化和初始化,the nib 加載代碼,將所有這些對象的出口和動作的連接。然後調用對象的awakefromnib方法。更詳細的信息有關的步驟,然後nib在加載過程中,看到“NIB文件”在資源規劃指南。

實例化過程中,檔案中的每個對象未歸檔然後初始化的方法適合於它的類型。符合nscoding協議對象(包括所有子類和處理)正在用他們的initwithcoder初始化:方法。不符合nscoding協議所有的對象都是使用init方法初始化。在所有對象被實例化和初始化, the nib加載代碼,將所有這些對象的出口和動作的連接。然後調用對象的awakefromnib方法。更詳細的信息有關的步驟,然後the nib在加載過程中,看“NIB文件”在資源規劃指南。

因爲在對象實例化一個檔案的順序是無法保證的,你的初始化方法,不應將消息發送到其他對象的層次結構。消息發送到其他對象可以被安全地從awakefromnib方法。

通常,你實現目標需要額外的設置,不能在設計時做的awakefromnib。例如,你可以使用這個方法來定製任何控件的默認配置匹配用戶的喜好或其他控件的值。你也可以使用它來恢復單個控件到你的應用的一些以前的狀態。




 下面來自   http://book.51cto.com/art/201209/357054.htm

《蘋果開發之Cocoa編程(原書第4版)》本書系統介紹了Objective-C語言、Cocoa主要的設計模式、必要的開發工具Xcode和Instruments等,同時新引入了ARC、blocks、view-based table views和Mac應用商店,並專門開闢一章用於介紹在iOS上的基礎開發。相比於之前的版本,本書在Cocoa框架新特性、新技術的基礎上,更加側重實戰,也更加結合應用發展的最新趨勢。本節爲大家介紹awakeFromNib。

AD:2013雲計算架構師峯會課程資料下載

2.3.5 awakeFromNib

注意,目前完成的應用程序還是有一些瑕疵的。當應用程序啓動時,應用程序只顯示“Label”字符而不是一些有意思的東西。那現在來解決這個問題,讓應用程序啓動後顯示日期和時間。

正如前面討論過的,NIB文件是應用程序所有對象的存檔。當程序啓動後,對象從文件中釋放,重新賦予生命,準備接收用戶觸發的事件信息。這種機制有些與衆不同:大多數GUI的設計都是爲界面佈局產生源代碼;相反,Interface Builder則允許開發者編輯好頁面元素的狀態後,把它們保存在文件裏面。

在對象從文件中釋放、獲得生命,而沒有接收到用戶事件以前,所有的對象自動發送awakeFromNib消息。開發者可以添加awakeFromNib方法,用來初始化文本框的值。

下面在RandomController.m文件中添加awakeFromNib方法。現在,輸入以下文本,稍後就會了解其功用了。簡單而言,就是創建NSDate的實例,用於顯示當前時間。然後設置文本框,將其值設置爲當前日曆時間對象。

 

文件中,方法定義的順序並不重要,只要確保在@implementation之後、在@end之前就可以了。

awakeFromNib方法不是手動調用的,通常都是自動調用的。再次運行開發的應用程序,讀者會看到如圖2-23所示的時間和日期。

 
圖2-23 完成後的應用程序
在Cocoa中,有很多方法都是自動調用的,就像awakeFromNib一樣。在閱讀本書的過程中,讀者可能會產生一些困惑,不明白究竟哪些方法需要手動調用,哪些方法又是自動調用的。筆者將在後續內容中儘量進行區分。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章