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:

Другие вопросы по тегам