退出Xcode Cocoa Swift应用程序

41

我在XCode 6中编写了我的第一个OS/X应用程序。除了我无法找到如何退出应用程序之外,一切都正常。我有一个退出按钮和以下定义的ExitNow函数:

@IBAction func ExitNow(sender: AnyObject) {
    // ???
}

我无法弄清楚代码应该是什么。在网上搜索后,我找到了各种选项,但它们要么是用Objective C编写的,要么对我来说太笼统了。我希望能得到一个像 cmd-Q 一样行事的例子。

3个回答

91
你应该能够直接调用全局的NSApp对象上的terminate方法。


Swift 4&5:

@IBAction func ExitNow(sender: AnyObject) {
    NSApplication.shared.terminate(self)
}

Swift 3:

@IBAction func ExitNow(sender: AnyObject) {
    NSApplication.shared().terminate(self)
}

Swift 2:


Swift 2:
@IBAction func ExitNow(sender: AnyObject) {
    NSApplication.sharedApplication().terminate(self)
}

1
我尝试了这个,但是出现了以下错误:NSApp.terminate(self),“terminate”不可用。在Swift中,OS X 10.9及更早版本的API已被弃用。 - Lanny Rosicky
2
哎呀,很抱歉,你似乎不能在NSApp中使用那个。我已经编辑了我的答案,改用NSApplication.sharedApplication()代替。我也在一个全新的面向10.10的OSX Swift项目中快速测试过,它运行良好。 - Mike S
语法错误 --> 对于Swift 3解决方案 ---> 使用if解开标识符 - Amr Angry
7
从 Swift 4 开始,使用 NSApplication.shared.terminate(self) 来终止应用程序。 - SaganRitual
如果您使用此方法终止应用程序,则如果您想通过编程方式重新打开它,该应用程序将无法再次打开。 - Zeeshan Suleman

17

或者我们可以像这样简单地退出应用程序:

@IBAction func ExitNow(sender: AnyObject) {    
    exit(0)
}

另外需要注意的是,您可以因为出现错误而退出:

fatalError("reason for exiting")

无条件地打印一条消息并停止执行。适用于 iOS 8.1 及更高版本。


4
在Xcode 9.0中,您可以使用NSApp.terminate(nil)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接