2012-05-16 52 views
4

我转换图像的NSData到CGImage如下,但我得到的内存泄漏存在,但任何一个可以告诉我如何转换与出越来越泄漏:如何NSData的转换图像到CGImageRef用了内存泄漏

CFDataRef imgData; 
CGDataProviderRef imgDataProvider; 
CGImageRef image1; 
imgData = (CFDataRef)[array objectAtIndex:i]; 
    imgDataProvider = CGDataProviderCreateWithCFData (imgData); 
    image1 = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); 

回答

9

这应该工作:

CFDataRef imgData; 
CGDataProviderRef imgDataProvider; 
CGImageRef image1; 
imgData = (CFDataRef)[array objectAtIndex:i]; 
imgDataProvider = CGDataProviderCreateWithCFData (imgData); 
CFRelease(imgData); 
image1 = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); 
CGDataProviderRelease(imgDataProvider); 

不要忘记使用CGImageRelease(image1);你用它做了。

+1

+1。 @laxcha,请阅读[Core Foundation的内存管理编程指南](https://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html)。 Core Graphics遵循Core Foundation内存管理规则。 –