2015-12-30 89 views
2

我试图从本地内容实现显示图像,但由于某种原因内存不会被释放。CGImageRef释放和autoreleasepool后内存泄漏

@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

你不应该调用'CFRelease'上'iref'。 – rmaddy

+0

你怎么确定你有内存泄漏? –

+0

我正在使用带泄漏的仪器选项。 – GrayFox

回答

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; 
} 
+0

内存略有不同,但内存问题仍然存在。 – GrayFox