假設我從XCode4中的模板創建了一個基於導航的應用程序,那麼在MainWindow.xib中將會有一個導航控制器,該控制器具有作爲RootViewController的子項。什麼時候界面生成器項目得到實例化?
究竟何時再:
- RootViewController的的實例創建?
- 此實例作爲兒童與導航控制器關聯?
特別是當涉及applicationDelegate「didFinishLaunchingWithOptions」方法的時間和發生時。
假設我從XCode4中的模板創建了一個基於導航的應用程序,那麼在MainWindow.xib中將會有一個導航控制器,該控制器具有作爲RootViewController的子項。什麼時候界面生成器項目得到實例化?
究竟何時再:
特別是當涉及applicationDelegate「didFinishLaunchingWithOptions」方法的時間和發生時。
如在plist中給出的,MainWindow是主要的nib文件庫所以有一些隱藏的代碼會在啓動時根據plist生成加載主窗口nib文件,這發生在didFinishLaunchingWithOptions之前
一旦加載了MainWindow nib,就會在後臺完成一連串的事情,請參考資源編程指南中的The Nib Object Life Cycle。
其中的一個步驟是
它解檔筆尖對象圖 數據和實例化的對象。
然後幾乎最後它的作用:
它發送一個awakeFromNib消息 在筆尖 文件定義匹配 選擇適當的對象: ... 在iOS中,該消息僅發送到 接口對象 由nib加載代碼實例化。 它不會發送給文件所有者,第一個 響應程序或任何其他代理對象。
您可以掌握的第一種方法是awakeFromNib
。
要回答你的三個問題:
在代碼到達application:didFinishLaunchingWithOptions:
之前將完成的所有操作。 UIApplicationMain()
函數(從您的應用程序的main()
調用的函數加載MainWindow.nib。加載NIB文件時,將實例化NIB文件中的所有對象,並創建對象之間的連接。視圖控制器本身已經存在於application: didFinishLaunchingWithOptions:
中,對於視圖控制器的視圖來說也是如此,視圖控制器在第一次訪問時懶惰地加載其視圖