Как я могу указать приложению Cocoa выйти из самого приложения?
Вопрос
Я ищу хороший способ сообщить моему приложению Cocoa о завершении работы.Будьте уверены, что это не будет использоваться для производственного кода.Я просто ищу простой способ запустить один тест, а затем закрыть приложение во время отладки.
Я нашел это exit(0);
закроет приложение, но обходит все обычные процедуры выхода приложения, и я хотел бы сохранить их все на месте.
По сути, я хочу, чтобы все работало так, как если бы пользователь вытащил «Выход» из меню, но я хочу, чтобы это происходило автоматически после завершения теста.
Мой код сейчас выглядит так:
#if (SUPERFANCY_TESTING_MODE)
[self doSomething];
exit(0); // <-- I need something better to go here
#endif
Решение
Вы можете быть уверены, что ваше приложение будет закрыто хотя бы некоторое время.Таким образом, защита от выходов, подобных exit(0);
является необходимый.
Однако NSApplication реализует -terminate:
метод.
[NSApp terminate: nil];
должен делать то, что хочешь.
Я бы вообще предложил опубликовать это через -performSelector:afterDelay:
с задержкой 0,0, чтобы это произошло в начале следующего прохода цикла событий.
Пример:
[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];