AppleInsider.ru
X
О проекте Реклама
Чат
с читателями
Присоединяйтесь
в Телеграме

Не ищите Interface Builder в Xcode 4, попивая сок у себя в квартале

C 1988 года, начиная с NeXTSTEP 0.8, в фирменной среде разработки присутствовало это приложение. Компоновщик интерфейсов. Довольно оригинальный (не уникальный, но все же необычный). Он был одной из причин почему Тим Бернерс-Ли выбрал для написания первого в мире браузера WorldWideWeb NeXT. В комплекте Xcode 4 этого приложения не было… В свое время, когда Интернет был еще совсем юным, а найти в нем все что душе угодно было совершенно невозможно, я опубликовал где-то статью про это чудо. Сам я еще не имел возможности попробовать NeXTSTEP, но зато скачал полный комплект документации с сайта NeXT (уже то ли купленной Apple, то ли купившей её), и внимательно его изучил.

Издание было не самым дружелюбным образом настроено по отношению к Apple (в 1997 это было обычным явлением), и сопроводило статью убийственным комментарием. Этот самый InterfaceBuilder был создан вовсе не Apple! Его написал какой-то француз, для Lisp.

Вообще-то, если я и упомянул в той статье Apple, то только в связи с её слиянием с NeXT, но ответить не было никакой возможности. Через несколько лет, узнав подробности, я мечтал поквитаться с обидчиком (но издания уже не было): “какого-то француза” звали Жан-Мари Юйó, он и в самом деле в 1986 году придумал и написал Interface Builder (с пробелом, это о чем-то говорит?) для ExpertLisp. Это одна из реализаций Lisp для Mac’а. Интегрированная с его операционной системой и API.

Этот Lisp был относительно популярен на Mac’ах, но из-за его редкости и огромной цены я до него так и не добрался. Здесь ворованных копий этого Lisp’а не было. А потом пропал и мой интерес к Lisp.

Зато в конце 1987 года Interface Builder и её автора привели в NeXT и показали их Джобсу. Как и предполагали совратители, Стив был потрясен, увлечен и захотел использовать “все это” в ProjectBuilder. Стив приобрел и самого Жана-Мари.

Меньше чем через год программа под названием InterfaceBuilder вошла в состав среды разработки NeXT. И пережила в её составе все драматические трансформации, выпавшие на её долю. В Mac OS X её снова переименовали в Interface Builder (с пробелом, это Mac), под тем же именем она вошла в состав Xcode, и вдруг, в 2011 году, её не стало…

Что такое Interface Builder?

Это компоновщик пользовательских интерфейсов не генерирующий программного кода. Он имеет дело с реальными объектами. С “высушенными”, но настоящими, которые при её применении не создаются заново, а восстанавливаются.

Из-за их природы их можно связывать с объектами в программном коде, как если бы они были его частью – и в то же время, большинство объектов визуально отображаются на “холсте” в Interface Builder. Их можно перетаскивать в нужное положение на экране, если класс объекта не запрещает изменять размер объекта – меняет его размеры.

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

Восстановленный объект (видимый или невидимый), если он был объявлен в программном коде, можно было дополнительно настроить – и вообще, делать с ним все что угодно.

С 1986 года, за 33 года существования, Interface Builder оброс многочисленными новыми способностями, некоторые из доисторических новаций канули в лету – но и сегодня это один из самых эффективных инструментов написания программ для операционных систем Apple. Если научиться им пользоваться (инструменты разработчиков пишутся для умных людей, их необходимо изучать и осваивать).

А в заголовке же “не ищите”? Это ложь для привлечения большего числа просмотров рекламы? В заголовке чистая правда.

Interface Builder и Xcode 4

В Xcode 4 Interface Builder перестал существовать как отдельная программа. С этого момента он – неотделимая часть и всего-лишь режим основного приложения среды разработки.

При открытии в среде разработки nib-файлов (их тоже не ищите в исходных кодах), среда разработки включает для них этот режим – в котором их можно редактировать, создавать или просто просматривать. Начиная с Xcode 3 у nib-файлов в исходном коде расширение “.xib”, формат на основе XML. В процессе сборки они “компилируются” в nib-файлы.

В Xcode 4 встроенный Interface Builder снова улучшили, приведя в замешательство даже самых опытных пользователей – но ненадолго. Зато он научился новым фокусам, говорить что он совсем не генерирует исходный код стало неправильно. Но подробнее не буду. Эти небольшие нарушения концепции были уместны, приятны и очень упростили жизнь.

Кроме того, в Xcode 4.2 произошла еще одна революция, но прежде чем рассказать о ней, надо рассказать еще кое о чем.

Interface Builder и iOS

Вскрытие и расшифровка исходных кодов iPhone приложений выявили несколько деталей, очень интересных для Mac’овских разработчиков. В приложениях не использовались nib-файлы, и в подавляющем большинстве случаев координаты объектов на экране задавали напрямую, их точными значениями.

В первых бета-версиях iPhone SDK о Interface Builder с iPhone OS не работал вообще. Я не помню в которой из них по счету их наконец подружили, но даже в окончательном релизе это Interface Builder работающий с iPhone OS был непролазным сборищем багов и глюков.

Он был, кроме всего прочего, еще и не дописан (местами). Видимо, Стив вовремя вспомнил что “The real artists ship”, и принял волевое решение.

Даже у тех кто прожил в Interface Builder долгие годы, с ним возникали проблемы, одна за одной. Новички предпочитали обходиться без него, потому что в примерах которые можно было найти в сети и в появившихся книгах по программированию в системе iPhone IB почти не применялся.

В компании где все были новичками в iPhone OS, ребят удалось приучить к пользованию Interface Builder, они почувствовали его полезность (даже несмотря на проблемы).

В следующей компании разработчики были опытными и съевшими на iOS (её хвали уже так) не одну собаку – они наотрез отказывались ей пользоваться, предпочитая строить интерфейсы “ручками”. Как первые iPhone-программисты на Земле.

Следующее поколение программистов очень удивлялось этому.

Storyboard

Еще одной революцией, случившейся с Interface Builder в Xcode 4 (кроме его избавления от багов и глюков и превращения его в надежный удобный инструмент для разработки в iOS), был новый формат архивов “обезвоженных” объектов, названный storyboard.

Файлы в этом формате имели расширение “.storyboard”, и теперь в одном таком файле можно было определить весь интерфейс приложения полностью, с переходами между экранами и визуальными эффектами.

Слово storyboard можно перевести как “раскадровка” – таблица эпизодов с разбивкой по актерам. И в русском, и в английском это жаргон киношников. Я подозревал что без Стива, самого крупного акционера Walt Disney, посвятившего компьютерной анимации несколько лет жизни, здесь не обошлось – но оказалось что он к этому совершенно не при чем. Его в тот момент интересовали более важные и значительно менее приятные вещи.

Раскадровки были замечательны, хоть и не лишены недостатков.

Со времен NeXTSTEP (и возможно, с еще более седых времен Жана-Мари Юйó), во всех разновидностях учебников и документации по использованию Interface Builder указывалось что в nib-файле крайне не рекомендуется объединять слишком много интерфейсов. Он для этого не оптимизирован, он будет долго грузиться и работать кое-как.

Когда-то на эти грабли наступил я сам: в 2001 году, в своей первой Cocoa-программе я все графические ресурсы собрал в одном файле. Чтобы были в одном месте, так спокойнее. А то что Interface Builder становился все более медлительным и тормозным я относил на счет его невысокого качества. Разделять этот клубок после прозрения было очень непросто.

С той же ошибкой у новичков я встречался неоднократно.

Теперь эта дурная (но понятная) привычка перестала быть дурной, теперь код можно было нанизывать на интерфейс – используя storyboard еще и как живой чертеж замысла.

Продолжение следует

Обсудить историю Apple вы можете в нашем Telegram-чате.

Новости партнеров
Что общего в мозге у всех психопатов — ученые нашли ответ
Что общего в мозге у всех психопатов — ученые нашли ответ
Полиция Австралии провела масштабную операцию против мошенников, использующих криптоматы
Полиция Австралии провела масштабную операцию против мошенников, использующих криптоматы
Что скрывают прямоугольные наушники Nothing Headphone (1), на которые вас будут разводить блогеры
Что скрывают прямоугольные наушники Nothing Headphone (1), на которые вас будут разводить блогеры