Core Graphics 栅格数据未从内存中释放
Posted
技术标签:
【中文标题】Core Graphics 栅格数据未从内存中释放【英文标题】:Core Graphics raster data not releasing from memory 【发布时间】:2013-11-14 03:28:09 【问题描述】:所以我让我的应用截屏并使用以下代码将其保存到相册中...
- (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 中的“分配摘要”告诉我数据类别是“CG 栅格数据”,负责的调用者是“CGDataProviderCreatWithCopyOfData”。
CFRelease() 中有没有解决方案; ?
我的第一个应用程序,所以我很菜鸟,我浏览了互联网试图解决这个问题,但没有运气......
【问题讨论】:
【参考方案1】:您可以尝试将方法的内容包装到 @autorelease
块中。
@autoreleasepool
...
【讨论】:
你的意思是@autoreleasepool? 确实,很抱歉。 它对我有用。无需投票。也许你没有自动释放正确的块。 你有很多我也赞成的答案,但这不是其中之一。以上是关于Core Graphics 栅格数据未从内存中释放的主要内容,如果未能解决你的问题,请参考以下文章
在 GC 环境中,Core Data 啥时候会释放其分配的内存?