Как я могу указать приложению Cocoa выйти из самого приложения?

StackOverflow https://stackoverflow.com/questions/1659177

  •  11-09-2019
  •  | 
  •  

Вопрос

Я ищу хороший способ сообщить моему приложению 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];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top