Нарушение производительности при использовании файлов NIB? - PullRequest
4 голосов
/ 11 июля 2009

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

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

Ответы [ 2 ]

5 голосов
/ 11 июля 2009

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

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

4 голосов
/ 11 июля 2009

По моему опыту, нет никакой заметной разницы.

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

...