Как объекты определяются в файле XIB и как они создаются во время выполнения?

StackOverflow https://stackoverflow.com/questions/1453807

  •  12-09-2019
  •  | 
  •  

Вопрос

Я только что купил Mac и начинаю изучать разработку программного обеспечения с использованием Cocoa и Objective-C с использованием XCode в Snow Leaped, имея сильный опыт работы с Microsoft и C#.

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

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

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

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

Это было полезно?

Решение

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

Нет. Набор один из несколько конкретных структур каталогов, а файл xib — это обычный файл, а не каталог.

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

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

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

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

Другие советы

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

Считайте их объектами, сериализованными в формате XML или других данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top