Какао - предотвращает отключение системы - PullRequest
1 голос
/ 01 апреля 2011

Эй, ребята, У меня есть другой вопрос, я не мог найти ответ в интернете. Я надеюсь, что вы можете мне помочь.

Я пишу приложение Какао, которое работает в фоновом режиме и выполняет несколько задач для меня. Если я выйду из приложения, я покажу NSAlert. Это все прекрасно работает. Но тут возникает моя проблема. Это предупреждение представлено изнутри applicationShouldTerminate: метода. Так что, если я выйду из системы, этот метод сработает и появится предупреждение. Но OSX выходит из приложения и выходит из системы, не дожидаясь ответа, даже если я возвращаю NSTerminateCancel.

Как я могу заставить ОС перестать выходить из системы / завершать работу из моего приложения, чтобы пользователь (я :-D) мог решить, что делать. (Это просто диалог, который спрашивает, должна ли сохраненная работа быть сохранена или нет.)

Надеюсь, вы мне поможете ...

Сандро

1 Ответ

0 голосов
/ 01 апреля 2011

Mac OS X основана на UNIX.Когда система выключается, посылается сигнал SIGKILL, который завершает все процессы.Но перед этим отправляется сигнал SIGTERM, который сообщает процессам о том, что остановка будет иметь место.

Я думаю, что решение заключается в обработке сигналов, то есть их обнаружении и блокировании.Относительно этого вы можете найти руководство в Библиотека GNU C: Обработка сигналов: Блокировка сигналов.

Примеры там могут быть о BSD, но вы можете знать, что ядро ​​OS X происходит от BSDи поэтому OS X поддерживает это.Кроме того, C поддерживается в Objective-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...