UIImage Memory problems because of caching
Я погуглил проблему с памятью, связанную с UIImage, и наткнулся на множество потоков, рассказывающих о проблеме, но без реальной помощи или решения.
Я знаю когда мы используем -imageNamed:
объект кэшируется, так что лучше использовать initWithData:
, Когда мы используем drawRect:
а также UIGraphicsGetImageFromCurrentImageContext()
, изображение идет в кеш?
Также в следующем коде:
CGImageRef tmp = CGImageCreateWithImageInRect(imageToCrop.CGImage, clippedRect); //pull the image from our cropped context UIImage *cropped = [UIImage imageWithCGImage:tmp];//UIGraphicsGetImageFromCurrentImageContext();
CGImageRelease(tmp);
Кэширование происходит, хотя в документации нет упоминаний об этом? Как освободить память, которая используется кешем?
1 ответ
Я не уверен, что ответ на ваш первый вопрос, но что касается второго вопроса, вы должны отметить, что когда вы получаете доступ к свойству CGImage UIImage, все изображение загружается в память. На это ссылаются в документации по свойству CGImage.
Если вы закончили с изображением после использования, вы можете просто вызвать метод release в UIImage, чтобы освободить память. Если вы хотите сохранить его, но удалить из кеша, я не могу думать ни о чем другом, кроме как записать образ на диск, выпустить его, а затем создать новый образ, используя -initWithData: