Что лучше всего описывает «Владельца файла» в фильме «target-c / Какао»? - PullRequest
29 голосов
/ 28 февраля 2009

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

Ответы [ 5 ]

29 голосов
/ 11 марта 2009

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

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

6 голосов
/ 28 февраля 2009

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

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

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

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

4 голосов
/ 28 февраля 2009

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

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

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

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

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

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

4 голосов
/ 28 февраля 2009

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

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

Но какой смысл в объекте "Владелец файла"? Для чего это хорошо?

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

Вот и все. Ничего больше, чем это.

1 голос
/ 28 февраля 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...