Что лучше всего описывает "Владельца файла" в objective-c / cocoa Nib?

К сожалению, объяснение владельца файла довольно короткое в документации Apple. Я знаю, что это прокси-объект. Но какой на самом деле смысл в этом объекте «Владелец файла»? Для чего это?

Ответов (5)

http://www.cocoadev.com/index.pl?FilesOwner

По сути, какой бы объект ни загрузил NibFile, становится владельцем файла для этого файла пера.

Лучше всего объяснить это на примере того, как это настроить. Допустим, у вас есть подкласс NSWindowController, который является контроллером окна настроек. Окно настроек находится в NIB под названием «Настройки».

В подклассе NSWindowController у вас будет следующий метод инициализации:

- (id)init {
    if (self = [super initWithWindowNibName:@"Preferences"]) {
        //do initalisation
    }
    return self;
}

Это инициализирует оконный контроллер, связывая его с пером с именем «Preferences» в основном пакете приложения. Обратите внимание, что NIB еще не загружен (это произойдет, когда вы впервые вызовете -window на оконном контроллере.

Затем в NIB настроек щелкните значок «Владелец файла», а затем перейдите на панель «Информация о классе» в Инспекторе. Здесь вы должны установить для класса имя вашего класса оконного контроллера (например, PreferencesController). Теперь он представляет собой экземпляр вашего оконного контроллера, чтобы вы могли подключать выходы и действия.

При редактировании в IB это просто прокси объекта, как и любой объект, который вы перетаскиваете в NIB, но когда NIB загружается, он будет установлен на созданный вами оконный контроллер.

Я знаю, что это прокси-объект.

Это не. Это настоящий объект. Значок в наконечнике является прокси только в том смысле, что все остальные значки представляют объекты, заархивированные в наконечнике, а владелец файла - нет. Но FO не является прокси-объектом в вашем приложении.

Но какой на самом деле смысл в этом объекте «Владелец файла»? Для чего это?

Это объект, которому принадлежат объекты в наконечнике.

Вот и все. Не более того.

Легче понять значение ссылки на владельца файла, если вы прочитаете и поймете процесс загрузки пера.

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

Фреймворки Какао автоматически обрабатывают множество загрузок пера от вашего имени, при этом один из собственных встроенных классов Какао служит в качестве класса контроллера, который управляет или «владеет» объектами, созданными в файле пера. Когда вы загружаете свои собственные перья вручную, вы можете выбрать, какой класс будет владельцем файла.

Когда вы читаете о процессе загрузки пера, обратите внимание на параметр «owner:» во многих методах загрузки. Именно этот объект будет связан с объектами в вашем файле пера как владелец файла.

Файлы пера часто называют «лиофилизированными» и готовыми к запуску, и они являются отличным способом сделать ваши приложения более модульными, что может снизить использование памяти. Файлы пера можно разморозить или загрузить в память в любое время, когда приложению понадобятся объекты внутри него.

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