Почему у меня не возникает проблем с нехваткой памяти, пока на экране не появятся изображения? - PullRequest
1 голос
/ 27 мая 2010

Я могу загрузить более 200 объектов UIImage в NSMutableDictionary без каких-либо проблем с памятью.

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

В любое время отображается только около 8 изображений.

Требуется ли дополнительная память для рисования UIImage на экране?

Нет утечек памяти, и я много раз проверял код на предмет утечек.

Ответы [ 2 ]

1 голос
/ 27 ноября 2010

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

0 голосов
/ 27 мая 2010

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

...