Порядок обращения делегатов NSApplication
Я заметил кое-что странное в моих обратных вызовах делегата NSApplication. Когда я запускаю приложение с подключенным отладчиком, я вижу то, что ожидаю: applicationDidFinishLaunching:
сначала вызывается, потом applicationDidBecomeActive:
Когда я запускаю приложение без отладчика, я получаю звонки в обратном порядке: applicationDidBecomeActive:
называется раньше applicationDidFinishLaunching:
Для этого есть причина? Это делает очень запутанным учет различных сценариев, основанных на отладчике и не отладчике.
[примечание: тестирование это в Маверикс]
1 ответ
Относительный порядок этих методов делегатов во время запуска не задокументирован, поэтому не следует полагаться на какой-либо конкретный порядок.
Если вы обеспокоены тем, что инициализация не была выполнена, когда -applicationDidBecomeActive:
называется, то вы должны сделать эту инициализацию в -applicationWillFinishLaunching:
а не в -applicationDidFinishLaunching:
, Или же вы должны выполнить инициализацию по требованию, например, инициализировать свойство при первом запросе его значения.