В отличие от 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 или адресную книгу и завершите основное окно. Там сидит зомби без окна и нет никакой функции, кроме ручного выбора "Выход".
Закройте приложение после закрытия последнего окна. Cocoa даже дает вам уведомление об этом событии. Просто добавьте это в свой делегат приложения:
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{
return YES;
}
Мой вопрос таков: есть ли причина, по которой я не должен прекращать свое приложение после закрытия последнего окна? Почему это так переменно в программном обеспечении OS X? Если у приложения нет "новой" или "открытой" или какой-либо другой четко понимаемой причины, чтобы не заканчиваться без открытия окна, отказ от завершения кажется мне ошибкой.