Core Graphics栅格数据未从内存中释放

时间:2013-11-03 10:38:43

标签: ios objective-c memory-management core-graphics

所以我让我的应用程序拍摄一个屏幕截图并将其保存到相册中,代码如下...

- (void) save {
        UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0 );
        [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(theImage,nil,NULL,NULL);
        NSData*theImageData=UIImageJPEGRepresentation(theImage, 1.0 );
        [theImageData writeToFile:@"image.jpeg" atomically:YES];
    }

如何释放由Core Graphics分配的屏幕截图栅格数据?

我的项目使用ARC进行内存管理。在测试应用程序如何分配内存时,我注意到在屏幕截图后内存没有被释放,导致应用程序随着时间的推移而变得迟缓。 Instruments中的“Allocation Summary”告诉我数据类别是“CG栅格数据”,负责调用者是'CGDataProviderCreatWithCopyOfData'。

CFRelease()中是否有解决方案; ?

我的第一个应用程序,所以我很漂亮,我已经浏览了互联网,尝试解决问题但没有运气......

1 个答案:

答案 0 :(得分:0)

您可以尝试将方法的内容包装到@autorelease块中。

@autoreleasepool {
...
}