Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Когда вы читаете о процессе загрузки nib, обратите внимание на параметр "owner:" во многих методах загрузки. Это именно тот объект, который будет связан с объектами вашего файла nib как File Owner

Ответ 3

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

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

Но какой смысл в этом объекте "File Owner"? Для чего это полезно?

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

Что это. Ничего больше, чем это.

Ответ 4

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

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

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

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

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

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

Ответ 5

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

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