Я полагаю, вы неправильно понимаете цель NSDocumentController, возможно, потому, что его имя похоже на NSWindowController и NSViewController.
В Cocoa MVC контроллер является посредником для представления и модели.При работе с окнами контроллер обычно является подклассом NSWindowController, а в случае представлений - подклассом NSViewController.
В архитектуре на основе документов класс NSDocument является посредником междумодель, которая представляет документ и соответствующие представления и контроллеры.По сути, он отвечает за воссоздание модели на основе внешнего представления и предоставляет некоторый способ присоединения поведения контроллера, соответствующего модели и представлению.Для этого обычно используются две конструкции:
Подкласс NSDocument эффективно выступает в качестве оконного (а также потенциально возможного просмотра) контроллера - например, путем реализации IBActions.Это должно работать для простых приложений, но может быстро привести к раздутому подклассу NSDocument, который имеет дело с чем-то большим, чем должно.Документация гласит:
Шаблон проекта приложения на основе документа по умолчанию не наследует NSWindowController.Вам не нужно создавать подкласс NSWindowController, если вы пишете простое приложение.Однако, если вы пишете приложение с более сложными требованиями, вы почти наверняка захотите это сделать.
Подкласс NSDocument создает настраиваемые контроллеры окон, которые, в свою очередь, реализуют поведение контроллеров, потенциально также используя контроллеры представления.
Inво многих (большинстве?) случаях нет необходимости в подклассе NSDocumentController - часть контроллера вашего приложения будет находиться внутри оконных контроллеров, контроллеров представления или вашего подкласса NSDocument.Тем не менее, в некоторых ситуациях это может быть необходимо, как объяснено в документации :
Обычно вам не нужно создавать подкласс NSDocumentController.Практически все, что может быть сделано с помощью подклассов, может быть легко выполнено делегатом приложения.Однако при необходимости можно создать подкласс NSDocumentController.
Например, если вам нужно настроить панель «Открыть», явно необходим подкласс NSDocumentController.Вы можете переопределить метод NSDocumentController runModalOpenPanel: forTypes: чтобы настроить панель или добавить вспомогательное представление.Методы addDocument: и removeDocument: предоставляются для субклассеров, которые хотят знать, когда документы открываются или закрываются.