Подтвердить что ты не робот

Когда стоит кэшировать ресурсы UIImage?

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

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

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

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

4b9b3361

Ответ 1

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

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

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