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

StackOverflow https://stackoverflow.com/questions/1112349

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top