Как узнать, закрывает ли пользователь приложение принудительно?

В моем приложении для Mac я поддерживаю полноэкранный режим, изменяя системное разрешение устройства. И я возвращаюсь к старому разрешению, если пользователь переключается из полноэкранного режима в оконный или если пользователь выходит из приложения, и мне также нужно обработать случай принудительного выхода.
1. Есть ли какой-либо API или обратный вызов, который сообщает приложению, если пользователь нажимает cmd + opt + esc (принудительный выход).
2. Есть ли другой способ справиться с этим?

Я знаю, что в NSApplicaction есть возможность отключить принудительный выход ([NSApplication setPresentationOptions: NSApplicationPresentationDisableForceQuit]), но вместо его отключения я хочу обработать событие принудительного выхода.


person Chandan Shetty SP    schedule 10.07.2012    source источник


Ответы (1)


По общему мнению, принудительное завершение работы отправляет SIGKILL («консенсус», поскольку я не знаю ни одной документации Apple, в которой говорится об этом, но это логичный ответ). SIGKILL не может быть пойман, поэтому вы не можете выполнить очистку напрямую. Альтернативой является запуск вспомогательного приложения, которое отслеживает ваше основное приложение и выполняет очистку; основное приложение может завершить работу вспомогательного приложения при нормальном выходе. См. Также этот вопрос.

person CRD    schedule 10.07.2012
comment
Если вы должны оставить принудительный выход включенным и обработать его, вам подойдет вспомогательное приложение. - person paulmelnikow; 14.07.2012