Swift: как выйти из приложения macOS с кодом выхода

Я использую .app для объединения моего инструмента командной строки (я использую фреймворк).

Чтобы выйти из приложения, я использую NSapp.terminate(self) и ловлю его:

func applicationWillTerminate(_ aNotification: Notification) {

    if exitSuccessful {
        print("successful")
    } else {
        print("not successful")
        exit(1)
    } 
}

Это приводит к выходу из приложения, но довольно жестко, так как после выхода (1) не выполняется деконструкция / выпуск или что-либо еще. На моей машине код выхода установлен правильно, но я получал сообщения о выходе с кодом 132 (SIGILL).

Я нашел кое-что похожее, но только для "чистых" утилит командной строки: http://ericasadun.com/2014/06/13/swift-command-line-exit-codes/

Любая идея?


person Francois T.    schedule 15.03.2017    source источник
comment
Я не уверен, о чем вы спрашиваете. Делегат applicationWillTerminate вызывается, когда приложение собирается завершить работу. Затем он уходит. Вам не нужно выходить вручную. Но если вы хотите очистить что-то перед выходом, если ваш exitSuccessful bool имеет значение false, просто сделайте это вместо вызова exit. :) Разве я неправильно понял ваш вопрос?   -  person Eric Aya    schedule 15.03.2017
comment
Спасибо, что ответили! Процесс при выходе вернет код выхода. 0 при полном успехе, ненулевое значение для других случаев. Моя цель - выйти из 1, если есть ошибка, чтобы ее можно было поймать скриптом, вызывающим приложение.   -  person Francois T.    schedule 15.03.2017
comment
Связано с этой проблемой → github.com/ftiff/MacAdminQuitApp/issues/3   -  person Francois T.    schedule 15.03.2017
comment
Возможный дубликат stackoverflow.com/questions/2742133/   -  person Eric Aya    schedule 15.03.2017