Управление памятью при использовании UIImage - PullRequest
3 голосов
/ 07 января 2009

Мое приложение интенсивно использует объект UIImage для изменения изображений в одном UIImageView на основе пользовательского ввода и предыдущего изображения, которое было установлено. Я использую [UIImage imageNamed:] для создания моих объектов UIImage.

Полагаю, это не лучший способ использовать UIImage, потому что мое использование памяти постоянно увеличивается и никогда не падает. (Узнал об этом, когда я запустил приложение с распределением объектов, и, кроме того, я не использую другие переменные NSString, только BOOL и UIImage)

Как я должен эффективно использовать объекты UIImage и UIImageView, чтобы поддерживать малый объем памяти?

Спасибо

Ответы [ 2 ]

11 голосов
/ 07 января 2009
[UIImage imageNamed:] 

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

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];

[UIImage imageWithData:imageData];

вместо.

0 голосов
/ 07 июня 2019

Для управления памятью с изображением, как сказано в @russtyshelf, вам нужно преобразовать файл изображения в данные и преобразовать его в изображение, но после этого вы должны сделать экземпляр образа нулевым, чтобы очистить кэш-память. т.е. в viewdidload () вы должны написать как:

let image = [UIImage imageWithData:imageData];

и на deinit контроллера или во время переключения видов ваше изображение должно быть ноль, т.е.

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