OS X设计决策.在最后一个窗口关闭时终止应用程序?

daw*_*awg 26 macos user-interface cocoa

与Windows,GNOME和大多数其他GUI不同,如果关闭该应用程序的主窗口(或所有窗口),则OS X应用程序不会全部终止.

例如,启动Firefox,Safari,Word或大多数基于文档的应用程序.单击角落中的红点或键入cmdW以关闭窗口.您可以看到该程序的菜单仍处于活动状态,程序仍在运行.对于OS X新手,有时候你会看到几十个无窗口的僵尸在运行,他们想知道为什么他们的计算机变慢了.

对于一些基于文档的程序,如果没有窗口,有一些意义就是不终止应用程序.例如,使用Safari或Word,您仍然可以CmdN为应用程序的任何设计键入并获取新的文档窗口:浏览Web(Safari)或键入新文档(Word).

Apple在这方面融入了他们的设计理念.一些关闭在最后一个窗口关闭,一些不关闭.第三方应用程序更加复杂.

单击其红色关闭按钮时,还有其他应用程序关闭.系统首选项,词典,Mac App Store,iPhoto和Calculator会在单一或最后一个窗口关闭时终止.iCal,地址簿,iTunes,DVD播放器不会终止.

我觉得特别恼人的是没有逻辑"新文档"或"打开"功能的应用程序,但是当文档窗口关闭时它们不会终止.示例:启动iTunes或通讯簿并终止主窗口.除了手动选择"退出"之外,还有一个没有窗口且没有功能的僵尸.

最后一个窗口关闭后很容易关闭应用程序.Cocoa甚至会告诉你该事件的通知.只需将此添加到您的应用程序委托:

  - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:在最后一个窗口关闭后,我有什么理由不应该终止我的申请吗?为什么在OS X软件上如此变化?除非应用程序有"新"或"开放"或其他一些明确理解的理由不终止没有窗口打开,否则终止失败对我来说似乎是个错误.

Dav*_*her 23

根据Apple的人机界面指南(Mac开发人员指南):

在大多数情况下,基于文档的应用程序应在主窗口关闭时退出.例如,如果用户关闭窗口,则系统首选项退出.但是,如果应用程序在主窗口关闭时继续执行某些功能,则在关闭主窗口时使其保持运行可能是合适的.例如,当用户关闭主窗口时,iTunes将继续播放.

  • 是的,它似乎取决于每个开发人员.也许Apple会更好地为App Store提交它. (2认同)