Существует ли простое для понимания руководство (новичок в Cocoa, Xcode и т. Д.) Для Interface Builder, в котором говорится о прокси-объектах? - PullRequest
15 голосов
/ 25 апреля 2009

Еще во времена C / C ++ часть языка, которая действительно меня повесила, была указателями. Теперь я их понимаю, конечно.

Теперь, прокси-объекты Interface Builder или, что более важно, как использовать Interface Builder и что помещать в окно .XIB (окно, содержащее владельца файла, первого ответчика и т. Д.) Для данной XIB.

Я просмотрел немало примеров из книг и примеров, найденных как в примерах Xcodes, так и в Интернете. Они были полезны, но я все еще чувствую себя немного потерянным.

Мне кажется, что понимание IB очень важно для понимания того, как писать приложения для Mac / iPhone / iPod touch.

Я прошел через следующие ресурсы: Aaron Hillegass 'Программирование Какао для Mac OS X Ресурсы прагматичного программиста: Стать продуктивным в Xcode (скринкаст) Программирование какао Кодирование в Objective-C 2.0 (screncast) Написание вашего первого приложения для iPhone (скринкаст) Разработка iPhone SDK

Я также просмотрел PDF-файл руководства пользователя Interface Builder от Apple.

Будут оценены любые предложенные советы / ресурсы!

Ответы [ 4 ]

44 голосов
/ 20 мая 2009

Во-первых, заполнитель здесь лучше, чем прокси.

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

Владелец файла, первый респондент и приложение являются заполнителями.

Владелец файла является заполнителем для объекта, который будет загружать перо. Все методы загрузки NIB принимают параметр 'owner'. Когда вы устанавливаете соединение с владельцем файла, когда он устанавливается во время выполнения, он будет связан с объектом владельца, переданным в метод загрузки пера. Многие классы UIKit и AppKit вызывают для вас методы загрузки пера. NSApplication, NSViewController, NSWindowController, UIApplication и UIViewController - все загружают файлы NIB от вашего имени. Когда они делают это, они передают себя как параметр владельца методам загрузки пера. Вот почему, когда вы используете контроллер представления или контроллер окна, вы устанавливаете владельца файла на свой подкласс и делаете большую часть соединений между вашими представлениями и владельцем файла.

Экземпляр NSApplication является простым заполнителем для [NSApplication sharedApplication]. Это глобальный синглтон, и значок в Интерфейсном Разработчике представляет этот глобальный синглтон. Загрузка файла NIB не создает второй экземпляр NSApplication. Напротив, если файл NIB содержит окно, если вы загружаете его дюжину раз, у вас будет дюжина экземпляров окна, но все равно один экземпляр NSApplication.

Первый респондент уникален. Подключение действия к первому респонденту означает, что при запуске действия оно должно динамически отправляться в цепочку респондента. Цепочка респондента обычно начинается с сфокусированного представления и продолжается вверх по иерархии представления и включает в себя некоторые контроллеры и делегаты. Каждый объект в цепочке получает укол при обработке действия. Пункты меню прекрасно работают с цепочкой респондента. Если бы у вас был пункт меню «Сделать жирным», который должен сделать выделенный в настоящий момент текст жирным, вы могли бы начать с подключения к подклассу NSApplication, но тогда вам нужно было бы знать все ситуации, которые » Make Bold »относится и к тому, как с ними обращаться. Текстовое представление и редактируемое веб-представление, вероятно, нуждаются в различном коде для обработки «сделать жирным шрифтом», и объединение всего этого в один объект может быть довольно сложным и не будет очень расширяемым. Вместо этого вы можете подключить действие пункта «Сделать жирным» к действию makeBold: на Первом респонденте. Это будет означать, что при выборе пункта меню сфокусированный объект или один из его родителей, который ответил на makeBold:, получит сообщение makeBold:. Теперь многие классы могут реализовать метод makeBold: и отвечать на этот пункт меню, когда они в фокусе.

1 голос
/ 06 февраля 2010

Apple имеет следующий документ, который объясняет владельца файла , Первый ответчик и Приложение объекты-заполнители, найденные в файлах Interface Builder NIB / XIB здесь:

Руководство пользователя Interface Builder: объекты-заполнители

Я понял, что в своем вопросе вы упомянули о чтении документации Apple Interface Builder, но я чувствовал, что это целесообразно опубликовать здесь для дальнейшего использования. Кроме того, документы обновлялись с тех пор, как впервые был задан ваш вопрос, поэтому, возможно, с тех пор они прояснили ситуацию.

1 голос
/ 25 апреля 2009

За исключением «Владельца файла» (который подключается при загрузке nib / xib), объекты, создаваемые вами в IB, являются реальными объектами, а не прокси-объектами.

Возможно, вы захотите просмотреть какой-нибудь существующий пример кода, чтобы увидеть, как IB подключает вещи. Есть ли в прочитанной вами документации / уроках что-нибудь, что вас смущает? Трудно многое сделать с «немного потерянным».

0 голосов
/ 07 июля 2009
...