Вот мой AppDelegate.swift. Я реализую протокол applicationShouldTerminate из NSApplication. Какой ответ я даю, зависит от статуса is.Started в mainWindowController. (Это пример SpeakLine из Cocoa Programming для OS X: Руководство Big Nerd Ranch 5/e-я пытаюсь сделать пример еще на один шаг и не дать программе выйти из игры во время разговора).Отправка ответаToApplicationShouldTerminate в NSApplication в Swift
Что я хочу сделать, это изменить TerminateReply.TerminateCancel на TerminateReply.TermianteLater, а затем отправить NSApplication ответToApplicationShouldTerminate (true), когда разговор будет выполнен. Поскольку он стоит сейчас в классе MainControllerWindow.swift, у меня есть функция, настроенная для обработки изменений состояния в Speech Synthesizer, и именно там я хочу ее назвать.
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var mainWindowController: MainWindowController?
func applicationDidFinishLaunching(aNotification: NSNotification) {
let mainWindowController = MainWindowController()
mainWindowController.showWindow(self)
self.mainWindowController = mainWindowController
}
func applicationShouldTerminate(sender: NSApplication) -> NSApplicationTerminateReply {
if (mainWindowController!.isStarted) {
return NSApplicationTerminateReply.TerminateCancel
} else {
return NSApplicationTerminateReply.TerminateNow
}
}
}
Проблема есть, когда я ставлю здесь, я получаю сообщение об ошибке.
var isStarted: Bool = false {
didSet {
updateButtons()
NSApplication.replyToApplicationShouldTerminate(true)
}
}
Это говорит мне, что я не могу использовать bool. Это также говорит мне, что я не могу использовать Objective C bool, когда пытаюсь поставить YES. Как сообщить NSApplication, что сейчас нормально уходить?
Это работает отлично, спасибо !!! – stormj
Я принял его, но у меня недостаточно очков для повышения. – stormj