Термин nib — это сокращение от “NeXTStep Interface Builder”, которое использовалось в качестве расширения файлов . nib.
Каждое приложение для системы iOS содержит хотя бы один nib-файл. Этот файл генерируется либо из файла .xib, либо из файла . storyboard в проекте Xcode (см. главу 6). Если вы редактируете файл .xib или .storyboard в среде Xcode, то оказываетесь в графическом редакторе; это выглядит так, будто часть своего интерфейса вы разрабатываете графически, подобно тому, как вы рисуете диаграммы с помощью программ Adobe Illustrator, OmniGraffle, Canvas или любого другого аналогичного приложения. Я называю этот компонент среды Xcode nib-редактором.
До появления версии Xcode 3.2.x nib-редактирование осуществлялось в отдельном приложении, которое называлось Interface Builder. Начиная с версии Xcode 4 функциональные возможности программы Interface Builder были реализованы в самой среде Xcode. Тем не менее nib-редактор в среде Xcode часто по-прежнему называют Interface Builder.
Работая с nib-редактором, вы на самом деле не создаете рисунков. Вы кодируете инструкции по созданию, инициализации и конфигурированию объектов. Как было сказано в главе 5 (см. раздел “Создание экземпляров на основе nib-файлов), когда вы перетаскиваете кнопку на представление в nib-редакторе, отпускаете эту кнопку в определенном месте, задаете ее размеры и дважды щелкаете на ее заголовке, вводя строку “Howdy! ”, вы вводите инструкции в nib-файл, который будет генерировать экземпляр класса UIButton и задавать свойства его рамки и заголовка, а также создавать дочернее представление в представлении, которое вы перетащили в него, выполняя весь процесс создания, инициализации и конфигурирования кнопки.
Инструкции, которые вы создали, работая в nib-редакторе, включаются в nib-файл в собранном приложении. Эти инструкции, по существу, являются коллекцией потенциальных объектов, которые называются nib-объектами. Эти потенциальные объекты, закодированные в nib-файле, не превращаются в реальные объекты, пока nib-файл не будет загружен в ходе выполнения приложения. В этот момент инструкции, записанные в nib-файле, выполняются механизмов загрузки nib-файлов и объекты превращаются в реальные экземпляры, готовые стать частью выполняемого приложения. Большей частью это объекты интерфейса, поэтому
чаще всего они проявляются как представления, являющиеся дочерними по отношению к представлению, которое видит пользователь.
Таким образом, программирование nib-интерфейса связано с тремя вопросами.
Эти связанные друг с другом вопросы являются предметом рассмотрения данной главы.
Нужны ли nib-файлы?
Поскольку nib-файлы являются всего лишь источниками экземпляров, может возникнуть вопрос: “А нельзя ли обойтись без них?” Если эти же экземпляры можно генерировать в коде, значит, можно обойтись без nib-файлов? Ответ простой: “Да, можно”. Можно написать сложное приложение, в котором не будет файлов . storyboard или .xib (я писал такие приложения). Однако с практической точки зрения это вопрос баланса. Большинство приложений используют nib-файлы как источник по крайней мере нескольких объектов интерфейса; однако существуют аспекты объектов интерфейса, которые можно настроить только в коде, и иногда проще сгенерировать эти объекты без помощи nib-файлов. В реальной жизни ваши проекты, вероятно, будут часто использовать связь между кодом и объектами, сгенерированными на основе nib-файлов.