Среда выполнения демона запуска Mac никогда не вызывает делегата приложения при запуске во время перезагрузки

Я работаю над службой Mac OS X, управляемой как демон запуска. У него нет графического интерфейса, но он структурирован как приложение Какао, запускаемое с NSApplicationMain.

Кажется, что даже несмотря на отсутствие графического интерфейса пользователя, есть проблема - все работает нормально при запуске через launchctl в окне терминала, но при перезагрузке системы во время запуска процесса я определил, что после вызова NSApplicationMain () процесс получает застрявший. Метод делегата приложения applicationDidFinishLaunching: никогда не вызывается (именно здесь мы инициализируем службу). Также не регистрируется ошибка, и NSApplicationMain () не возвращает.

Я просмотрел Launch Services docs, но я не вижу упоминания об этой проблеме, и я не нашел никакой информации о том, что среда выполнения NSApplication без графического интерфейса требует входа в систему или сервера окна для присутствовать.

У кого-нибудь есть опыт работы с этим, есть общие проблемы или есть окончательный ответ, можно ли запустить службу launchd, не основанную на графическом интерфейсе, во время загрузки?


person Corbell    schedule 23.01.2018    source источник


Ответы (1)


Похоже, это связано с проблемами пространства имен Bootstrap и, вероятно, подпадает под этот уже заданный вопрос (который по какой-то причине не появился в результатах, когда я искал stackoverflow для связанных терминов)

Недостатки построения фона - только приложение COCOA в качестве демона запуска?

person Corbell    schedule 23.01.2018