2015-12-30 96 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