Архитектура документа

Архитектура документа определяет роли и каналы связи объектов в основанных на документе приложениях. Путем принятия архитектуры документа можно эффективно создать приложения, создающие, открывающие, сохраняющие, возвращающиеся, распечатывающие документы, представляющие данные различных типов. Основанные на документе приложения, разработанные в соответствии с архитектурой документа, могут также управлять многократными окнами документа, монитором и установить отредактированное состояние и обработать сообщения жизненного цикла приложения. Приложение разработки XCode обеспечивает шаблоны проекта для основанных на документе приложений.

Архитектура документа непосредственно основана на шаблоне разработки Контроллера представления Модели (MVC). Некоторые объекты, вовлеченные в архитектуру документа, имеют гибридные роли, такие как контроллер представления и контроллер модели.

Art/doc_architecture_mvc.jpg

Документ является Контейнером Данных, Идентифицированных по имени

Документ владеет и управляет данными, которые находятся в памяти, когда документ открыт и, когда сохранено, записан в дисковый файл под присвоенным пользователями именем. Это выводит на экран те данные в одном или более окнах и делает его доступным для редактирования. Документ может не только считать и записать свои данные, он может выполнить другие операции на данных, такие как печать, вернуться, и отмена. Данные документа могут иметь любой тип и могут действительно иметь многократные типы, но должны быть формально указаны те типы. В архитектуре документа, NSDocument объект представляет документ.

Объекты в основанном на документе приложении имеют иерархические отношения

Три класса являются частью архитектуры документа: NSDocument, NSDocumentController, и NSWindowController. Объекты этих классов делят и координируют работу создания, сохранения, открытия и управления документами приложения. Они располагаются в разделенной на уровни связи «один ко многим». NSDocumentController объект (которых существует только один на приложение) создает и управляет один или больше NSDocument объекты. NSDocument объект, в свою очередь, создает и управляет один или больше NSWindowController объекты.

Объекты имеют отличные роли и обязанности в основанном на документе приложении:

  • NSDocumentController объект предпринимает начальные шаги в создании и вводных документах, и как только они открыты, дорожки, и управляет ими. Это также управляет меню Open Recent. NSDocumentController экземпляр автоматически реагирует на события приложения, такие как запуск приложения, завершение приложения, завершение работы системы, и открытие или печать документов от Средства поиска. В шаблоне разработки MVC, NSDocumentController объект является контроллером координирования.

    Вы обычно не разделяете на подклассы NSDocumentController. Шаблон проекта XCode для основанных на документе приложений приводит Вам готовый пример класса как Владелец Файла основного файла пера.

  • NSDocument основная роль объекта должна представлять, управлять, сохранить и загрузить персистентные данные, связанные с документом. Вы указываете в информационном списке свойств приложения типы документов, которые приложение может считать и записать. По умолчанию, Ваше пользовательское NSDocument объект знает, как выполнить и управлять панелью Save и панелью Page Layout. Когда полностью реализовано, объект может реагировать на запросы, чтобы сохранить, открыться и вернуться документы; это может также отследить свое отредактированное состояние, данные документа печати, и выполнить отмену и восстановить операции. В шаблоне разработки MVC, NSDocument играет гибридную роль, тот из контроллера модели.

    Необходимо создать пользовательский подкласс NSDocument. Шаблон проекта XCode для основанных на документе приложений обеспечивает частично определенный интерфейс и файлы реализации для подкласса. Комментарии в файле реализации дают Вам предложения для переопределения NSDocument методы.

  • NSWindowController объект управляет одним окном, связанным с документом, обычно хранящимся в файле пера. Если документ имеет многократные окна, каждое окно имеет свой собственный контроллер окна. Каждый контроллер окна ответственен за закрытие окон после обеспечения, что сохраняются данные. В шаблоне разработки MVC, NSWindowController объект является контроллером представления.

    Создание пользовательского подкласса NSWindowController является дополнительным; можно хотеть расширить класс, чтобы загрузить файлы пера по-другому, выполнить специальные задачи установки или настроить заголовки окон.

Архитектура документа поддерживает автоматизированную прикладную модель

Равномерно NSDocument класс сохраняет документы автоматически на месте. Это перезаписывает файл документа полностью путем выполнения безопасного сохранения (т.е. записи данных во временный файл, затем замены текущего файла этим). Если документ не назван — другими словами, пользователь не сохранил его под присвоенным именем в файловой системе —NSDocument автосохранения это в ~/Library/Autosave Information.

Необходимые как условие статьи

Категорическое обсуждение

    Руководство по программированию приложения Mac

Проекты примера кода

  • QuickLookSketch