Как я могу сказать своему приложению Какао выйти из самого приложения? - PullRequest
33 голосов
/ 02 ноября 2009

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

Я обнаружил, что exit(0); закроет приложение, но оно обходит все обычные процедуры выхода из приложения, и я хотел бы сохранить их все на месте.

По сути, я хочу, чтобы все работало так, как если бы пользователь вынул "Выход" из меню, но я хочу, чтобы это происходило автоматически после того, как я закончил свой тест.

Мой код в настоящее время выглядит так:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif

1 Ответ

83 голосов
/ 02 ноября 2009

Вы можете быть уверены, что ваше приложение будет убито, по крайней мере, в какое-то время. Таким образом, для защиты от выходов, подобных exit(0); , требуется .

Однако NSApplication реализует метод -terminate:.

[NSApp terminate: nil]; должен делать то, что вы хотите.

Я бы обычно предлагал отправить его через -performSelector:afterDelay: с задержкой 0,0, чтобы это произошло в начале следующего прохода цикла событий.

Пример:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
...