2013-04-23 59 views
2

假定App Delegate位於主XIB文件中的默認Xcode Cocoa應用程序模板。awakeFromNib,applicationWillFinishLaunching和applicationDidFinishLaunching的順序?

當然,在applicationDidFinishLaunching:之前調用applicationWillFinishLaunching:

爲什麼awakeFromNib被稱爲之前applicationWillFinishLaunching:

applicationWillFinishLaunching:文檔說這個:

應用程序對象初始化之前默認的通知中心發送。

爲什麼這並不矛盾awakeFromNib被稱爲applicationWillFinishLaunching:過嗎?

我可以依賴這個命令嗎?

+0

@Jeff是的,這就是爲什麼我很困惑。 – 7cows 2013-04-23 12:45:30

+0

其中的類是你正在看的awakeFromNib。 – 2013-04-23 14:11:25

+0

@KenAspeslagh在主XIB文件中實例化的應用程序委託類(默認Xcode模板創建的Cocoa項目中的AppDelegate.h和AppDelegate.m)。 – 7cows 2013-04-23 14:35:28

回答

0

根據this answer,awakeFromNib在從nib存檔中提取控制器時被調用。我想這是在應用程序啓動完成後發生的。

4

該命令是awakeFromNib,applicationWillFinishLaunching和applicationDidFinishLaunching,這是有道理的,因爲您在實際運行應用程序之前首先需要加載UI。該通知不是applicationDidStartLaunching,可以將其視爲在awakeFromNib之前必須執行的操作。

1

1.awakeFromNib
2.applicationWillFinishLaunching
3.的applicationDidFinishLaunching

  • 的awakeFromNi b將首先被調用。
  • 當初始化nib文件時,nib中引用的每個對象都將循環遍歷,如果它們響應該消息,它們都將接收到awakeFromNib調用。
  • 完成所有操作後,應用程序的委託將收到applicationDidFinishLaunching:call。這是通知,一切都已加載,應用程序已準備好開始接收用戶輸入。