Когда стоит кэшировать ресурсы UIImage? - PullRequest
11 голосов
/ 16 июля 2011

Я много работал с пользовательским интерфейсом iPhone с файлами изображений, которые используются в нескольких местах в одном представлении или в нескольких представлениях по всему приложению.В некоторых случаях я рисую новые значки, обычно путем компоновки 2 небольших изображений (каждое размером менее 4 КБ).

Я немного подумал об оптимизации загрузки изображений, но не уверенкакие будут лучшие практики.Я полагаю, что было бы целесообразно сохранить любые изображения, созданные или измененные с помощью функций компьютерной графики.С изображениями, которые не изменены, каковы издержки загрузки изображений из пакета?

UIImage* image = [UIImage imageNamed:@"myImage.png"]

С учетом ограничений памяти мобильного устройства, какие факторы наиболее важны при рассмотрении кэширования изображений?Размер изображения, общее количество изображений, которые могут быть кэшированы, и количество загрузок одного изображения.

1 Ответ

17 голосов
/ 16 июля 2011

В последних сеансах производительности на WWDC (2011) Apple не рекомендовала кэшировать изображения в большинстве случаев.Они рекомендуют кэшировать изображения только тогда, когда вы точно знаете, после анализа производительности, что вам нужно кэшировать изображения заранее, потому что у вас нет времени, чтобы загрузить их с диска и декодировать.В большинстве случаев вы, вероятно, можете себе это позволить.

Они специально отметили, как @Till, что +[UIImage imageNamed:] кэширует изображения на протяжении всего жизненного цикла вашего процесса, и поэтому они рекомендуют использовать метод загрузки без кэширования, напримерas +[UIImage imageWithContentsOfFile:]

Причина в том, что память является ограниченным ресурсом на устройствах iOS, поэтому, если вы кешируете свои изображения, вы, скорее всего, вызовете нехватку памяти в системе, и приложения будут подвергнуты пробой.А поскольку приложения iOS 5 для создания jetsam сначала используют больше памяти, если вы кэшируете кучу UIImages, вы увеличите вероятность того, что ваше приложение получит jetsammed.

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