2

NSApplication デリゲート コールバックに奇妙な点があることに気付きました。デバッガーをアタッチしてアプリを起動すると、期待どおりのことがわかります。applicationDidFinishLaunching:最初に呼び出され、次に呼び出されますapplicationDidBecomeActive:

デバッガーなしでアプリを実行すると、逆の順序で呼び出しが行われます:applicationDidBecomeActive:前に呼び出されますapplicationDidFinishLaunching:

これには理由がありますか?デバッガーと非デバッガーに基づくさまざまなシナリオを考慮すると、非常に混乱します。

[注: これは Mavericks でテストしています]

4

1 に答える 1

5

起動中のこれらのデリゲート メソッドの相対的な順序は文書化されていないため、特定の順序に依存しないでください。

が呼び出されたときに一部の初期化が行われていないことが懸念される場合は、ではなく で-applicationDidBecomeActive:その初期化を行う必要があります。または、値が最初に要求されたときにプロパティを初期化するなど、必要に応じて初期化を行う必要があります。-applicationWillFinishLaunching:-applicationDidFinishLaunching:

于 2014-10-18T08:32:48.923 に答える