OS X дизайнерские решения. Завершить работу приложения при последнем закрытии окна? - PullRequest
26 голосов
/ 30 марта 2011

В отличие от Windows, GNOME и большинства других графических интерфейсов, прикладные программы OS X не закрываются, если закрыто главное окно (или все окна) этого приложения.

Например, запустите Firefox, Safari, Word или большинство приложений на основе документов. Либо щелкните красную точку в углу, либо введите cmd W , чтобы закрыть окно. Вы можете видеть, что меню этой программы все еще активно, и программа все еще работает. С новичками в OS X иногда вы видите десятки запущенных зомби без окон и они удивляются, почему их компьютер работает медленнее.

В некоторых программах на основе документов есть смысл не завершать работу приложения, если у него нет окон. Например, в Safari или Word вы все равно можете набрать Cmd N и получить новое окно документа для того, для чего предназначено это приложение: просматривать веб-страницы (Safari) или вводить новый документ (Word).

Apple смешана с их философией дизайна в этом. Некоторые закрываются на последнем закрытом окне, а некоторые нет. Сторонние приложения еще более смешанные.

Есть и другие приложения, которые закрываются при нажатии на красную кнопку закрытия. Системные настройки, словарь, Mac App Store, iPhoto и калькулятор завершаются, когда закрывается единственное или последнее окно. iCal, адресная книга, iTunes, DVD-плеер не прекращаются.

Что меня особенно раздражает, так это приложения, которые не имеют логической функции «Новый документ» или «Открыть», но не закрываются при закрытии окна документа. Пример: запустить iTunes или адресную книгу и закрыть главное окно. Там сидит зомби без окна и никакой функции, кроме ручного выбора «Выйти».

Приложение легко закрыть после закрытия последнего окна. Какао даже дает вам уведомление об этом событии. Просто добавьте это к вашему делегату приложения:

  - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
    return YES;
}

У меня такой вопрос: есть ли какая-то причина, по которой я НЕ должен закрывать свое приложение после закрытия последнего окна? Почему это так изменчиво в программном обеспечении OS X? Если у приложения нет «нового» или «открытого» или какой-либо другой четко понятной причины не завершать работу без открытого окна, мне кажется, что ошибка завершения не является ошибкой.

Ответы [ 3 ]

23 голосов
/ 30 марта 2011

Согласно рекомендациям Apple Human Interface (руководство для разработчиков Mac):

В большинстве случаев это приложения, которые не основанный на документе должен выйти, когда главное окно закрыто. За Пример, Системные настройки выходят, если пользователь закрывает окно. Если Приложение продолжает выполнять некоторые функция, когда главное окно закрыт, однако, это может быть уместно оставить его включенным, когда основной окно закрыто. Например, гостиницы продолжает играть, когда пользователь закрывается главное окно.

3 голосов
/ 30 марта 2011

Как правило, никогда не закрывайте приложение на основе документа при закрытии последнего окна. Пользователь будет ожидать, что сможет открыть новый документ, не перезапуская приложение, и он запутает их, если они не смогут.

Для приложений, не основанных на документах, необходимо учитывать несколько вещей:

  1. Сколько времени занимает открытие моего приложения? Если это займет больше секунды, вы, вероятно, не должны выходить.
  2. Нужно ли моему приложению окно, чтобы быть полезным? Если ваше приложение может работать без окон, вы не должны выходить.

iTunes не закрывается, потому что, как упоминала Энн, вам не нужно окно для воспроизведения музыки (вопрос 2). Он также не основан на Какао, поэтому его гораздо труднее закрыть после последнего окна, тем более что он позволяет открывать окна для определенных списков воспроизведения, поэтому существует неограниченное количество возможных окон, которые можно открыть.

По моему мнению, Адресная книга не должна оставаться открытой. Это может быть устаревшее решение по дизайну от старых версий OS X, или кто-то из Apple просто подумал, что лучше оставить его открытым (может, вы добавите контакт?). И iTunes, и Адресная книга предоставляют доступ к своим основным интерфейсам через меню «Окно», а также с помощью сочетания клавиш ( Опция + Команда + 1 для iTunes, Команда + 0 для адресной книги).

0 голосов
/ 30 марта 2011

Главное окно iTunes можно открыть из меню «Окно». Mail.app имеет похожее поведение. Я не могу вспомнить ни одного приложения, которое закрывается, когда закрывается последнее окно, и поэтому я не думаю, что есть веская причина, по которой ваше приложение должно вести себя так (на самом деле, я удивлен, что это не в пользовательском интерфейсе Apple). руководящие принципы, это действительно будет беспокоить меня!).

Одна из причин, по которой вы хотите закрыть, например, Главное окно iTunes, но приложение остается открытым, позволяет использовать приложение в качестве сервера для сторонних скриптов / приложений. Я редко использую основной интерфейс iTunes, но вместо этого управляю своей музыкой с помощью стороннего приложения. Я также пишу AppleScripts для других приложений, которые запускаю вместо взаимодействия с интерфейсом этого приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...