2009-09-21 1 views
3

Я только что купил Mac и я начинаю исследовать разработки программного обеспечения с использованием какао и Objective-C с помощью XCode в снеге поднявшихся прийдя от сильного Microsoft и C# backgrundКак объекты определены в XIB-файле и как они создаются во время выполнения?

Всей документации и учебников я прочитал использование Interface Builder и XCode для создания приложений с пользовательскими интерфейсами. Мое настоящее понимание заключается в том, что объекты, созданные Interface Builder, определенным образом определены в файле .xib и созданы во время выполнения.

В комплект поставки входят код и ресурсы, которые его сопровождают. Правильно ли говорить, что .xib-файл на самом деле является пакетом, который содержит ресурсы пользовательского интерфейса и что этот пакет загружен (это правильный глагол?) Во время выполнения и экземпляры объектов?

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

Есть ли что-нибудь, что я должен читать, чтобы понять кажущуюся смену парадигмы между C#/WinForms и Objective-C/Mac OS/Cocoa?

ответ

2

Можно ли сказать, что .xib-файл на самом деле является пакетом, который содержит ресурсы пользовательского интерфейса и что этот пакет загружен (это правильный глагол?) Во время выполнения и экземпляры объектов?

No. A bundle является одним из several specific directory structures и XIB файл является обычным файлом, не является каталогом.

Файл xib содержит описания объектов. Когда вы компилируете nib (обычно как часть создания вашего приложения), компилятор nib читает в xib, создает объекты, как описано в нем, и архивирует их в ниб, который также не является пакетом.

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

Не беспокойтесь о деталях реализации. Nibs Just Work. Все, что вам нужно сделать, это:

  1. Создайте xib-файлы. Если вы используете контроль версий, это то, что вы говорите, чтобы отслеживать.
  2. Убедитесь, что они находятся в папках .lproj (так что локализаторы могут создавать локализованные версии из них).
  3. Позвольте Xcode обрабатывать остальные.
+0

Спасибо, это было довольно информативно и несколько отличается от основанного на коде поколения stratergy, используемого дизайнером форм Visual Studio. Интерфейс Builder не генерирует код в NIB, а описание объекта – Crippledsmurf

+0

-1, чтобы не беспокоиться о деталях реализации. – Brett

2

Ключом к пониманию является то, что в нормальном смысле нет никакого кода ... по крайней мере, ресурсы пользовательского интерфейса nib/xib не просто противоречат объективному c-коду, которые просто генерируются Integer Builder. Это объекты, которые являются «замороженными» в наконечках и «незамерзшими», когда это необходимо приложениям (или, как мне кажется, пробуждается, как подсказывает awakeFromNib). Они заархивированы в формате xml/plist/etc, а не являются основой для генерации объектно-ориентированного исходного кода.

Рассмотрите их объекты, которые были сериализованы как xml или другие данные.

+0

Я как-то понял, что вся целая вещь NIB/XIB была контейнером для объектов и что, следовательно, должна произойти какая-то сериализация, предположим, что im не найдет ничего аналогичного файлу designer.cs .... о, ну, лучше учиться, я думаю, – Crippledsmurf

 Смежные вопросы

  • Нет связанных вопросов^_^