CGImageRef发布后的内存泄漏和自动释放池

时间:2015-12-30 05:59:19

标签: objective-c memory-management quartz-core

我试图从本地内容实现show image但由于某种原因,内存不会被释放。

@autoreleasepool {
  ALAssetRepresentation *rep = [myasset defaultRepresentation];
  CGImageRef iref = [rep fullResolutionImage];
  UIImage *largeimage = [UIImage imageWithCGImage:iref scale:[UIScreen mainScreen].scale orientation:(UIImageOrientation)rep.orientation];
  CFRelease(iref);
  self.imageView.image = largeimage;
  largeimage = nil;
 }

正如所建议的,我用过

CGImageRelease(imageRef);

但我仍然有内存泄漏。之后我用

包装代码
@autoreleasepool {}
阻止,但这也无法解决我的问题。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

我认为问题出在您将图像分配到图像视图时。您可以在将图像分配给图像视图之前尝试调整图像大小吗?

使用此方法

- (UIImage *)resizeImage:(UIImage *)sourceImage toSize:(CGSize)newSize
{
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [sourceImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}