NSApplication 委托调用的顺序

Z S*_*Z S 2 macos objective-c nsapplication nsapplication-delegate

我注意到我的 NSApplication 委托回调中有一些奇怪的东西。当我启动带有调试器的应用程序时,我看到了我的期望:applicationDidFinishLaunching:首先被调用,然后applicationDidBecomeActive:

当我在没有调试器的情况下运行应用程序时,我以相反的顺序收到调用:applicationDidBecomeActive:在调用之前applicationDidFinishLaunching:

是否有一个原因?考虑基于调试器与非调试器的不同场景非常令人困惑。

[注意:测试这是在小牛队]

Ken*_*ses 5

这些委托方法在启动期间的相对顺序没有记录,因此您不应依赖任何特定顺序。

如果您担心在-applicationDidBecomeActive:调用时某些初始化没有完成,那么您应该在 in-applicationWillFinishLaunching:而不是 in中进行初始化-applicationDidFinishLaunching:。或者,您应该按需进行初始化,例如在首次请求属性值时对其进行初始化。