iPhone Interface Builder и делегаты - PullRequest
14 голосов
/ 17 апреля 2009

Когда я создаю пример приложения (т. Е. Начинаю с приложения панели вкладок или чего-то еще), в моем файле MainWindow.xib я вижу 5 элементов в списке - Владелец файла, Первый ответчик, Делегат приложения, Окно и Вкладка Барный контроллер.

Если я создаю другой файл .xib, создаю для него делегат и устанавливаю владельцем этого файла мой новый делегат, который я только что создал, я НЕ вижу «NewDelegateFile» в списке ... объектов (?) для этого .xib.

Это не имеет смысла для меня, и я думаю, что это огромная часть того, почему я не придаю большого значения разработке iPhone.

Кто-нибудь хочет найти время, чтобы объяснить мне эту маленькую особенность?

1 Ответ

24 голосов
/ 18 апреля 2009

Владелец файла не является реальным объектом в xib-файле. Это объект прокси. Он представляет объект, который станет владельцем xib при загрузке. First Responder и App Delegate также являются прокси. Первый респондент - это объект, который в настоящее время находится в верхней части цепочки респондента. Когда состояние приложения изменяется, первым объектом может быть другой объект. Этот прокси-объект используется для подключения таких вещей, как меню «Файл»> «Сохранить», к любому объекту, который отвечает за его обработку в любой момент времени.

Делегат приложения является реальным объектом. Он оживает, когда загружается XIB. Как вы можете видеть в Интерфейсном Разработчике, это связано с выходом делегата владельца файла. Приложение загружает файл MainWindow.xib, поэтому он является владельцем файла.

Другие xib-файлы обычно загружаются через объект делегата. Этот объект делегата является владельцем файла. Но сам делегат создается из кода. Не загружается с xib. Вот почему он не отображается в Интерфейсном Разработчике.

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

Владелец файла (часто UIViewDelgate в файлах, отличных от MainWindow.xib) - это курица. Ксиб это яйцо. Сама курица не содержится в яйце.

немного долго. Надеюсь, это поможет.

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