В отличие от 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? Если у приложения нет «нового» или «открытого» или какой-либо другой четко понятной причины не завершать работу без открытого окна, мне кажется, что ошибка завершения не является ошибкой.