Что происходит, когда опция "создать приложение на основе документов" выбрана в Xcode?

При прохождении какого-либо образца кода обратите внимание, что установка основного заголовка окна в IB не влияет, когда выбрана опция "создать приложение на основе документа". Окно выйдет с названием "Без названия" в качестве названия. И нам нужно переопределить - (NSString *) displayName {} в MyDocument: NSDocument inorder, чтобы установить заголовок окна. Просто хочу, чтобы некоторые эксперты в xcode могли объяснить, почему это так. То есть, что добавлено в систему, когда мы проверяем параметр "создать приложение на основе документа" при первоначальном создании проекта?

Ответ 1

Поймите, что при создании проекта из шаблона в Xcode Xcode действительно не генерирует никакого кода. Конечно, это может заполнить несколько пробелов с вашим именем, именем вашего проекта и т.д. Но то, что вы получаете, - это, по сути, консервный код стартера для выбранного вами проекта. То, что добавляется, когда вы проверяете опцию "на основе документа", является подклассом NSDocument, настроенным с разумным именем для вашего приложения.

Взгляните на "Руководство по человеческому интерфейсу" "Яблоки", такие как this, и вы увидите, что окна документа должны быть названы на основе документа, который они отображают. По этой причине поведение по умолчанию для приложения на основе документов заключается в том, чтобы указать заголовок в имени файла документа.

Наконец, посмотрите справочную страницу NSDocument, и вы обнаружите, что поведение, которое вы видите, является частью NSDocument класс. В частности, если вы посмотрите на метод -displayName, вы найдете информацию о том, как правильно настроить заголовок окна.

Ответ 2

Контроллер окна может свободно переопределять заголовок, присвоенный окну в IB. В приложении, не основанном на документе, стандартные оконные контроллеры будут использовать заголовок окна, потому что у них нет причин не делать этого. Однако, когда документ создает его оконные контроллеры, он сообщает им, что они подключены к нему. Затем они смотрят на свойство displayName документа и обновляют заголовок окна в ответ. Реализация по умолчанию просто устанавливает заголовок окна таким же, как и документ, который не имеет названия, пока файл не будет сохранен.