Избегайте UIImage imageNamed - управление памятью - PullRequest
6 голосов
/ 26 августа 2011

Я проходил по этой ссылке , где я наткнулся на точку Избегайте изображения UIImage с именем . По какой причине мы должны избегать этого?

Ответы [ 4 ]

7 голосов
/ 26 августа 2011

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

Для меня я обычно использую "imageWithContentsOfFile":

[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]]
6 голосов
/ 26 августа 2011

В разделе видео Apple WWDC говорится, что imageNamed один раз просочился ... Но больше не делаю .. Я помню, как смотрел видео, но не могу вспомнить, какой раздел видео ... Это было в WWDC 2010 года, я думаю ... ImageNamed все еще кэширует изображения.. Из документации imageNamed ..

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

Но я думаю, что эти кэши будут очищеныкогда возникает какое-либо нехватка памяти .. Просто для вашей информации .. Я заядлый фанат imageNamed и всегда им пользуюсь .. У меня никогда не было проблем с памятью ..

2 голосов
/ 26 августа 2011

Прочитайте статью до конца.

Избегайте изображения UIImageNamed: Алекс Курило написал великолепную статью о проблемах с UIImage imageNamed: статический метод. Кажется (и в моих тестах это было похоже на правду), что iPhone OS (версии 2.0 и 2.1 по крайней мере) использует внутренний кеш для изображений, загруженных с диска с помощью imageNamed:, и что в случаях нехватки памяти этот кеш не очищается полностью (это, кажется, исправлено с версией 2.2, хотя, но я не могу подтвердить).

1 голос
/ 26 августа 2011

Это говорит о том, что этого следует избегать в версиях 2.0 и 2.1 SDK. Он долго работал правильно.

Взгляните на этот вопрос

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