2014-10-18 62 views
2

我在我的NSApplication委託回調中發現了一些奇怪的東西。當我開始調試應用程序連接,我看到預期的結果:applicationDidFinishLaunching:首先被調用,然後applicationDidBecomeActive:NSApplication委託調用的順序

當我運行沒有調試器的應用程序,我得到的順序調用相反:applicationDidBecomeActive:applicationDidFinishLaunching:

之前調用

這是有原因嗎?考慮到基於調試器與非調試器的不同場景,這使得它非常混亂。

[注:測試這是小牛]

+0

我很驚訝'applicationDidFinishLaunching:'在*我的主視圖控制器的'viewDidLoad'方法之前被調用*。這與*不一致。 – wcochran 2015-04-07 01:37:24

回答

4

的發射過程中的委託方法的相對順序沒有記載,所以你不應該依賴任何特定的順序。

如果你擔心一些初始化時-applicationDidBecomeActive:被稱爲沒有做到位,那麼你應該做的初始化在-applicationWillFinishLaunching:而不是-applicationDidFinishLaunching:。或者,您應該按需進行初始化,例如在首次請求其值時初始化屬性。