Как UIImage работает в ситуациях с нехваткой памяти? - PullRequest
3 голосов
/ 23 марта 2010

Согласно документации UIImage :

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

Кто-нибудь знает, как это работает?Похоже, что этот процесс полностью прозрачен и будет происходить в фоновом режиме без моего участия, но я не могу найти какую-либо окончательную документацию так или иначе.

Во-вторых, произойдет ли эта очистка данных, когдаизображение не загружено мной?(Я получаю изображение из UIImagePicker).

Вот ситуация: я делаю снимок с UIImagePickerController и сразу же беру это изображение и отправляю его на новый UIViewController для отображения.Отправка необработанного изображения на новый контроллер приводит к сбою приложения с предупреждениями о памяти в 30% случаев.Изменение размера изображения занимает несколько минут, время, которое я бы предпочел не тратить, если для меня доступен третий вариант.

Ответы [ 2 ]

3 голосов
/ 23 марта 2010

Я думаю, что это ответ.В документации для initWithContentsOfFile: написано:

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

Ни один из других методов в UIImage не упоминает очистку, поэтому кажется, что инициализацияновое изображение из файла - единственный способ получить такое низкое поведение памяти.

0 голосов
/ 23 марта 2010

В ответ на ваш второй вопрос: сохраните его в файл, а затем используйте:

[NSData dataWithContentsOfMappedFile:]

для изменения размера. Использование файлов в качестве промежуточных файлов довольно медленное.

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