为什么 Mac 应用程序永远不会“关闭”?

Som*_*DOS 64 osx window

我是 Linux/Windows/Mac 用户。我喜欢所有系统,*nixes 多于 Windows,但我仍然喜欢所有系统。

我今年开始使用 Mac,我无法理解 Linux 和 Windows 之间的区别是:为什么当我点击“x”按钮时应用程序永远不会关闭,因为这是 Linux 和 Windows 的行为方式?我需要按 cmd+q 或通过向上菜单退出。

我的意思是,这只是与所有这些不同,还是有这种行为的原因?我看不出有什么好处。如果我想关闭,我想关闭。时期。

有谁知道这是什么原因?

小智 94

从某种意义上说,这是一个 UI 约定,其历史可以追溯到 1984 年。由于 Windows 和 X11 都发布了原始 Mac GUI,因此有人可能会说 Windows 以 Windows 方式“只是为了与众不同”而不是暗示 Mac 是个怪人。

在 Macintosh 的早期,您一次只能运行一个应用程序。应用程序在没有窗口的情况下打开是完全合理的,因为应用程序总是在屏幕顶部有一个可见的菜单栏。当您关闭应用程序的所有窗口时,保持应用程序打开是有意义的,因为您始终可以使用菜单栏创建新文档或打开现有文档。仅仅因为窗口关闭而退出进程在当时没有任何意义,因为没有其他进程可以将焦点转移到。

几年后,80 年代后期的 Macintosh 发展到有足够的内存可以同时打开多个应用程序。由于用于执行此操作的工具必须保留与现有应用程序的向后兼容性,因此它们自然不会改变基本的 UI 约定并在没有打开任何窗口的情况下杀死应用程序。结果是在可视化 GUI 元素(一个窗口)和一个抽象的运行进程(应用程序)之间的 UI 中有一个清晰的区别。

与此同时,微软一直在开发 Windows。到 90 年代初,Microsoft 的 Windows 3.X 运行良好,X11 上的 Motif 深受 Microsoft 工作的启发。虽然 Macintosh 是围绕呈现应用程序的 UI 构建的,但 Windows(顾名思义)是围绕这样一种哲学构建的,即窗口本身应该是 UI 的基本单元,应用程序的唯一概念是MDI 风格的容器窗口。从 UI 的角度来看,X11 还认为应用程序在很大程度上并不重要。单个进程甚至可以在通过(非常新颖的)局域网连接到多台机器的多个显示器上打开窗口。

Windows 风格方法的问题在于,您无法进行某些形式的用户交互,例如仅使用菜单栏打开,并且当窗口消失时,用户无法真正保证进程实际上已退出。Macintosh 用户可以轻松切换到在没有 Windows 的情况下运行的应用程序以退出或使用它,但 Windows 绝对没有为用户提供与此类进程交互的方式。(除了在任务管理器中注意到它并杀死它。)此外,用户不能选择让进程运行,以便他们可以在不重新启动的情况下返回它,除了保持一些可见的 UI 不受进程的影响在屏幕上,并消耗(当时非常有限)的资源。Macintosh 有一个用于切换的“应用程序”菜单,而 Windows 则普及了一个“任务栏”,它显示了所有顶级窗口,而不考虑打开它们的过程。对于繁重的多任务者来说,“任务栏汤”被证明是笨拙的。对于更基本的用户来说,关于什么完全符合“顶级窗口”的可预测性有时会令人困惑,因为没有关于究竟哪些窗口实际显示在栏上的可学习规则。

到 90 年代后期,微软的 GUI 是最常用的。大多数用户拥有 Windows PC,而不是 Macintosh 或 UNIX X11 工作站。因此,随着 Linux 随着时间的推移越来越流行,许多开发人员的背景是使用 Windows UI 约定而不是 UNIX UI 约定。这与从 Windows UI 约定绘制 Motif 等早期工作的历史相结合,导致现代 Linux 桌面环境的行为更像 Windows,而不是像 twm 或 Macintosh 这样的经典 X11 事物。

在这一点上,“经典”Mac OS 已经在 Mac OS 9 上运行,而 Macintosh 变成了一台以 Unix 为动力的机器,以 Mac OS X 的形式拥有非常不同的胆量。因此,它继承了 Dock 的 NeXT UI 概念。在最初的 NeXT 机器上,使用 X11,但具有一组相当独特的小部件和 UI 约定。其中最有特色的可能是 Dock,它是一种组合程序启动器和任务切换器。(OS-X 中已知的“多列”打开文件对话框也来自 NeXT,以及其他一些可见的东西。不过,OS-X 过渡中最重要的变化都是不可见的。)Dock与 Macintosh 的“应用程序作为基本 UI 元素”的概念配合得很好。所以,用户可以通过停靠栏图标上的标记看到应用程序已打开,然后通过单击它切换到它或启动它。由于现代 OS-X 现在比经典 Mac OS 更好地支持多任务处理,因此用户可能希望在后台运行各种东西,例如某些在后台启动的视频转换软件,这突然变得有意义了。 、屏幕录像机、VOIP 软件、网络收音机、网络服务器、响应口头命令的东西等等。这些东西都不一定需要打开可见窗口才能仍然具有合理的用户体验,以及菜单bar 仍然与屏幕顶部的窗口分开,您可以直接在停靠栏图标上设置菜单,因此用户始终可以与没有打开 UI 的程序进行交互。最后,放弃保持应用程序打开的现有惯例,只是为了更像 Windows,在大多数 Mac 用户看来,这是朝着错误方向迈出的可怕一步。它使几种交互模式变得不可能,没有真正的好处。

显然,一些用户更喜欢 Windows 约定,而且两者都不是“可证明是正确的”。但是,在没有任何充分理由的情况下从这样有用的东西迁移出去是没有意义的。希望本次历史之旅能为您提供一些您认为有用的背景信息。


Joh*_*han 21

窗口不是MacOS 中的应用程序,在 MacOS 中,窗口连接到应用程序。这就是关闭窗口时应用程序不退出的原因。

在 Windows 上,窗口就是应用程序,这就是当您点击退出按钮时应用程序应该退出的原因。

在 Linux 上,开发人员决定他们喜欢使用哪种架构,两种方式都是可能的......

  • 在 Windows 上,这两种方式也是可能的...... (5认同)

phu*_*ehe 17

这是特定于应用程序的。例如,当您单击红色按钮时,系统偏好设置应用程序退出。但是,当您尝试“关闭”窗口时,大多数程序只会关闭窗口(以及其中的文档)。我想这背后的想法是在您想再次使用该应用程序时使事情变得更快。

如果我想关闭,我想关闭。时期。

我同意,所以我使用键盘快捷键,Cmd+w用于关闭窗口,Cmd+q用于真正退出。大多数应用程序都实现了这一点。另一种方法是右键单击应用程序图标并选择“退出”,这会慢得多。


小智 8

是的,这非常非常烦人。

同时,这个应用程序应该有帮助:http :
//www.carsten-mielke.com/redquits.html

从描述来看:

您是否曾尝试关闭带有红色按钮的应用程序并想知道为什么它仍然打开?RedQuits 改变了这一点。如果单击红色按钮,所有程序现在都会退出并关闭所有打开的窗口。

  • 这是唯一一个正确答案,谢谢@Tamas!规则是计算机和软件应该灵活并且适合我的需求和习惯——而不是相反的方式! (2认同)