Лучшее, что вы можете сделать, это выполнить ленивую загрузку.Загружайте только изображения, которые видны в это время в этом представлении.После прокрутки старые изображения будут выпущены, а новое загружено.
Два способа загрузки изображений:
[UIImage imageNamed:fullFileName] // caches the image
или:
NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
[UIImage imageWithData:imageData];
или, наконец,:
[UIImage imageWithContentsOfFile:path] // does not cache the image
Какое решение лучше всего зависит от того, что вы делаете с изображением.Метод imageNamed:
кэширует изображение, но во многих случаях это поможет с использованием памяти.Например, если вы загружаете изображение 10 раз для отображения вместе с некоторым текстом в табличном представлении, UIImage
будет хранить только одно представление этого изображения в памяти вместо размещения 10 отдельных объектов.С другой стороны, если у вас очень большое изображение и вы не используете его повторно, вы можете загрузить изображение из объекта данных, чтобы убедиться, что оно будет удалено из памяти, когда вы закончите.
Если у вас нет больших изображений, я не буду беспокоиться о кэшировании, если вы используете ленивую загрузку.Если вы не видите проблемы, я бы выбрал меньшее количество строк кода вместо незначительных улучшений памяти.