UIImageView и UIImage: Как я могу настроить наибольшую производительность из них? - PullRequest
1 голос
/ 10 мая 2009

Во-первых: я реализовал довольно сложный механизм прокрутки для изображений, который позволяет прокручивать несколько сотен тысяч (теоретически) в одном представлении прокрутки. Это делается путем предварительной загрузки небольших порций при прокрутке при повторном использовании всех UIImageViews. В настоящее время все, что я делаю, - это назначаю новые созданные объекты UIImage этим повторно используемым UIImageViews.

Возможно, было бы лучше, если бы можно было повторно использовать эти объекты UIImage, передавая им новые данные изображения.

Теперь проблема в том, что я в настоящее время использую метод -imageNamed :. В документации написано, что она кеширует изображение.

Проблемы, которые я вижу в этом случае с -imageNamed: Поскольку изображение прокручивается за пределы диапазона предварительной загрузки, оно больше не требуется. Было бы плохо, если бы он пытался кэшировать тысячи изображений, пока пользователь прокручивает, прокручивает и прокручивает. И если я найду способ вставить новые данные изображения в объект UIImage для его повторного использования, то что произойдет с кэшированным старым изображением?

Итак, остался один метод, который кажется интересным: -initWithContentsOfFile:

Это не кэширует изображение. И он не использует -autorelease, что хорошо в этом случае.

Как вы думаете, в этом случае было бы лучше использовать -initWithContentsOfFile :?

Ответы [ 3 ]

2 голосов
/ 10 мая 2009

Только эталонный тест может сказать вам наверняка. Я склонен думать, что UIImage кэширование изображений, вероятно, чрезвычайно эффективно, учитывая, что оно используется практически везде в ОС. Тем не менее, с количеством отображаемых изображений ваш подход может помочь.

0 голосов
/ 16 февраля 2012

Я нашел одну ссылку относительно этого, которая комментирует метод imageNamed http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/

0 голосов
/ 22 августа 2011

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

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