我写了下面的代码片段来截取屏幕快照:
UIGraphicsBeginImageContext(animationView.frame.size);
[[window layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage* screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();但是,UIGraphicsGetImageFromCurrentImageContext似乎正在泄漏。这是正确的吗?
在Instruments中,我无法获得确切的泄漏点。在活动监视器中,我观察到当我切换到执行上述代码片段的UI时,内存增加了一些MB。从这一点开始,它就再也不会减少。UIGraphicsGetImageFromCurrentImageContext是否有内存泄漏?我该如何解决这个问题?
编辑
仪器分析活动监视器:显示执行此行代码时的内存增加;即使在释放屏幕截图(UIImage)后也不会减少
泄漏和分配,堆快照:不显示任何泄漏或此分配。
发布于 2011-08-25 21:29:44
您刚刚创建了一个包含animationView数据的UIImage (可能有几MB)。也许您应该将此功能包装在一个自动释放池中。
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
UIImage* screenshot = UIGraphicsGetImageFromCurrentImageContext();
//[screenshot retain]; //If you want precise control over when it is released and you will use it later.
[pool release];发布于 2016-03-24 17:43:07
CGContextRef context = UIGraphicsGetCurrentContext();
/*你的代码*/
CGContextRelease(上下文);
完成后清除上下文
https://stackoverflow.com/questions/7191146
复制相似问题