как это приложение узнает, что оно должно использовать архитектуру документа, инициализировать NSDocumentController, а затем создать новый документ?
Мне неясно, как работает Xcode, но похоже, что в info.plist приложения CocoaNSDocumentClass должен быть установлен на Document, а Role должен быть установлен на Editor (или Viewer, None или Shell) для создания документа. В своей демонстрации попробуйте удалить одну или обе эти строки в списке и посмотрите, работает ли приложение. Обе настройки расположены на втором уровне типов документов. По моему опыту, удаление любой из этих строк ломает приложение, а восстановление правильных настроек исправляет его. В программно созданном приложении на основе документов (без пера) и компиляции с помощью Terminal следующие ошибки генерируются, когда я go внутри пакета и запускаю исполняемый файл после удаления одной или других настроек info.plist, упомянутых выше.
2020-02-11 19:31:48.294 nsdoc_demo[1606:658926] NSDocumentController Info.plist warning: The values of CFBundleTypeRole entries must be 'Editor', 'Viewer', 'None', or 'Shell'.
2020-02-11 19:38:46.355 nsdoc_demo[1748:680819] -[NSWindowController loadWindow]: failed to load window nib file 'Document'.
Xcode (с Document.xib) генерирует следующую ошибку, когда CocoaNSDocumentClass не установлен:
2020-02-11 16:22:03.022602-0600 docExpt[1166:428702] The DocumentType type doesn't map to any NSDocumentClass.
По моему опыту, исходный код может быть в порядке, но если info.plist не установлен правильно приложение на основе документа не будет работать должным образом.