Плюсы и минусы использования XIB и программных представлений - PullRequest
4 голосов
/ 13 июня 2011

Я хочу решить, лучше ли использовать XIB или полностью разрабатывать мои представления с использованием кода.

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

Каким был ваш опыт, советы и т. д.?

Спасибо!

Ответы [ 5 ]

3 голосов
/ 13 июня 2011

Вы должны быть в состоянии сделать и то и другое - бывают случаи, когда программное построение представления лучше / проще, и времена, когда использование .xib лучше / проще.Даже если вы когда-либо делаете вещи только одним способом, вы столкнетесь с кодом, который делает это другим, и вам нужно будет иметь с этим дело.

Если вы не знаете, как использоватьIB, тогда строить ваши взгляды в коде, конечно, проще.Вот почему вы должны научиться использовать IB.Как только вы поймете IB, вы сможете гораздо быстрее собрать большую часть пользовательского интерфейса, основанного на представлениях, который, вероятно, понадобится вашему приложению.IB помогает вам выравнивать вещи, центрировать объекты, выравнивать базовые линии, соединять элементы управления с их целями и действиями и т. Д. Я думаю, можно с уверенностью сказать, что каждый , кто использует IB, эффективно испытывает "реальное увеличение скорости при использовании перьев".. "

2 голосов
/ 08 сентября 2014

Вы должны знать, как использовать оба.Различия в производительности между ними незначительны и не должны быть причиной выбора вами одного или другого.

Многие люди, не знакомые с разработкой для iOS, ошибочно полагают, что перья (файлы .xib) уступают программному созданию.ваш пользовательский интерфейс и что, если вы используете IB, вы не хороший разработчик iOS.Это мнение на 100% неверно.IB создается Apple и используется разработчиками Apple для создания собственных приложений для Mac OS X и iOS.Если IB (как инструмент) достаточно хорош для использования некоторыми из лучших разработчиков в мире, то, вероятно, достаточно для большинства из нас.

На практике я обнаружил, что комбинация этих двух обычноотвечает всем требованиям.

В моих собственных приложениях я нахожу, что .xibs отлично подходят для быстрого изложения основ ваших представлений, и они позволяют вам очень быстро выполнять итерации, давая вам предварительный просмотр того, как будет выглядеть ваше представление.,Также гораздо проще использовать автоматическое расположение в файле .xib.

Тогда, когда вам нужно сделать более сложные вещи, такие как добавление необычной анимации или перемещение представлений, для этого и нужен IBOutlets.На все, что вы положили в перо, можно ссылаться через IBOutlet.Это позволяет вам затем программно оживить ваш взгляд.

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

Кроме того, вы узнаете, как использовать .xibs инкапсулированным образом.Например, .xibs безумно полезны для таких вещей, как клетки-прототипы, и они позволяют вам поддерживать модульную базу кода (гораздо больше, чем раскадровки).Кроме того, вам потребуется меньше UI-кода в ваших контроллерах представления.

Наконец, я всегда говорю, что люди должны думать о IB / .xibs как jQuery.Это сэкономит вам много времени, но лучшие разработчики все еще знают, как делать все в javascript, если они должны.

Удачи и веселья!

TL; DR версия

  • Производительность не учитывается при принятии решения об использовании .xibs или нет.
  • Используйте .xibs, поскольку они дают вам предварительный просмотр создаваемого вами представления и позволяют быстро выполнять итерации
  • На практике большинство приложений используют комбинацию обоих.Вы будете программно добавлять анимацию или перемещать представления, но .xibs будет отправной точкой
  • Полностью понять, что происходит, когда объекты в .xib размораживаются
  • Вы будете более продуктивными, ноубедитесь, что вы полностью понимаете, что происходит за кулисами.
1 голос
/ 13 июня 2011

Я всегда использовал бы файлы XIB, если бы не было причины не делать этого.Это позволяет легко поддерживать ваши представления в будущем.

Некоторые причины для программного создания представлений могут быть следующими:

  • Элемент управления необходимо изменить, переместить или изменить другим способом в зависимости отчто-то еще
  • Элементы управления должны добавляться или удаляться динамически

Причин может быть больше, но их не так уж много.не нужно, чтобы другим разработчикам было намного сложнее выяснить, как будет выглядеть представление, и изменить его.

0 голосов
/ 14 июня 2011

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

Один из часто пропускаемых элементов в IB или не обсуждаемый вопрос - это скорость разработки,особенно если у вас есть несколько разработчиков.В более крупной команде / проекте у вас, вероятно, будет несколько разработчиков, которые больше специализируются на инфраструктуре, бизнес-логике и т. Д. Приложения, а также некоторые разработчики, которые больше специализируются на пользовательском интерфейсе.В этом случае использование IB облегчит их независимую работу, что должно сделать общую разработку более эффективной.

Я рассматриваю IB как основную часть платформы разработки для разработки под iOS.Это не правильное решение в любой ситуации, но не знание, как использовать IB, будет реальным ограничивающим фактором.

0 голосов
/ 13 июня 2011

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

Если вы используете IB, вы получите инструкции по правильному расположению элементов и позиционированию, но вы всегда можете скопировать координаты из IB в код, если вы не меняете дизайнэто часто.

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

...