如何以编程方式退出Mac应用程序?

48

我需要在我的应用程序中添加一个从Mac菜单栏运行的退出按钮。 如何以编程方式退出Mac上的应用程序?

5个回答

84

有一种更简单的方法退出代码:

[NSApp terminate:self];

但是,由于您正在添加一个按钮,所以您只需要从按钮控制拖动到应用程序图标并连接方法terminate:

输入图像描述 输入图像描述


我会在代码中添加我的按钮,但还是感谢您提供的另一种解决方案。 - Man of One Way
只是好奇,这个答案指的是哪个IDE? - Mythics
请注意,在较新版本的Xcode中,您应该在按钮和文件所有者占位符之间创建一个插座,而不是应用程序。 - Berendschot

23
[[NSApplication sharedApplication] terminate:self];

1
这句话和[NSApp terminate:self];有什么区别? - 11684
12
没有区别,NSApp[NSApplication sharedApplication] 是一致的。 - omz
1
哇,那真是太快了!谢谢! - 11684

6

请尝试以下步骤:

[NSApp terminate: nil];

4

在某些情况下,当你调用[NSApp terminate:self];时,你无法关闭应用程序。比如在文档窗口上显示NSAlert -beginSheetModalForWindow:completionHandler:时...

你可以在调用terminate之前关闭所有的窗口和弹出提示框,像以下的代码:

for (NSWindow *window in [NSApplication sharedApplication].windows) {
    [window close];
}
[NSApp terminate:self];

1
NSApplicationwindows属性除了NSWindow实例还能返回什么? - vadian
@vadian 没错,你说得对,Windows只返回NSWindow。我会编辑代码。 - larva

1

用 Swift 编写:

NSApp.terminate(self)

或者

NSApplication.shared.terminate(self)

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