Снижение производительности при использовании файлов NIB?

Мне любопытно узнать, есть ли у кого-нибудь опыт сравнения производительности времени загрузки приложений iPhone с представлениями, выложенными в NIB, с представлениями, выложенными полностью программно (т.е. создание экземпляра UITextView, добавление его в представление, создание экземпляра UIButton, добавление его в представление …).

Если я хочу, чтобы простое приложение загружалось молниеносно, было бы лучше отказаться от использования NIB (ну, технически XIB) и вместо этого создавать элементы представления программно? Достаточно ли времени, затраченного на загрузку и анализ NIB, чтобы иметь заметную разницу?


person Kevin L.    schedule 10.07.2009    source источник
comment
Совершенно придирчиво, но XIB компилируются в NIB во время процесса сборки, поэтому технически вы всегда загружаете NIB во время выполнения.   -  person Barry Wark    schedule 11.07.2009


Ответы (2)


Я заметил, что загрузка сложных интерфейсов на iPhone с NIB немного медленнее. Это всего на долю секунды, но это заметно, если пользователь ожидает увидеть лист или модальное представление. Я думаю, разница в том, что NIB лениво загружаются на iPhone, поэтому представление фактически создается при первом отображении представления, а не при первом создании контроллера и иерархии представлений. Тем не менее, это, вероятно, имеет значение только для iPhone :-)

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

person Ben Gotow    schedule 11.07.2009

По моему опыту, это не имеет никакого значения.

И если вы думаете о том, что происходит с системой NIB, это компактное двоичное представление состояния объектов пользовательского интерфейса. Создавая объект программно, вы экономите только время, необходимое для загрузки этого файла и выполнения очень простого анализа. Сравните это с количеством времени, которое требуется для инициализации и выполнения первого отрисовки этого объекта (выделение памяти для лежащих в основе объектов CALayer, их отрисовка с помощью Quartz2D и последующее объединение результатов вместе). Это время намного больше, и оно одинаково независимо от того, используете ли вы NIB или нет. Если вы загрузите кучу файлов PNG для рисования пользовательского интерфейса, это значительно сократит время, затрачиваемое на создание элементов управления.

person U62    schedule 11.07.2009