iOS Image View предложения по улучшению производительности - PullRequest
1 голос
/ 15 ноября 2011

Мое приложение делает скриншоты. У меня есть главный экран с видом прокрутки, который позволяет циклически проходить через эти снимки. Проблема в том, что чем больше у меня снимков, тем медленнее работает представление. Я могу получить около 15 снимков в обзоре прокрутки, прежде чем все станет серьезно запаздывающим. Изображения, которые я показываю, имеют только 1/3 размера фактического скриншота. Каждый скриншот представляет собой UIImageView на скроллвью. Есть мысли по поводу увеличения производительности здесь?

1 Ответ

5 голосов
/ 15 ноября 2011

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

Два способа загрузки изображений:

[UIImage imageNamed:fullFileName] // caches the image

или:

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
[UIImage imageWithData:imageData];

или, наконец,:

[UIImage imageWithContentsOfFile:path] // does not cache the image

Какое решение лучше всего зависит от того, что вы делаете с изображением.Метод imageNamed: кэширует изображение, но во многих случаях это поможет с использованием памяти.Например, если вы загружаете изображение 10 раз для отображения вместе с некоторым текстом в табличном представлении, UIImage будет хранить только одно представление этого изображения в памяти вместо размещения 10 отдельных объектов.С другой стороны, если у вас очень большое изображение и вы не используете его повторно, вы можете загрузить изображение из объекта данных, чтобы убедиться, что оно будет удалено из памяти, когда вы закончите.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...