renderInContext对App Memory征税

时间:2013-10-28 23:17:29

标签: ios iphone memory uiimageview uigraphicscontext

我在2448 X 2448像素图片上运行此代码。 fullScaleView也是2448 X 2448(fullScreenView Rect:{{0, 0}, {2448, 2448}})。方法完成后,App内存从49.7MB跳至240MB,降至172MB。它保持在172MB。在renderInContext之后,应用程序似乎仍然无法在如此高的内存占用率下运行。我应该在何处以及如何强制释放? (iOS 7 XCode 5 ARC)。

UIGraphicsBeginImageContextWithOptions(fullScaleView.bounds.size, fullScaleView.opaque, 1.0);
[fullScaleView.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

1 个答案:

答案 0 :(得分:3)

内存跳转因为图像很大 - 如果你确定不再需要它,你应该在自动释放块中使用返回的图像进行包装:

e.g。

@autoreleasepool {
    UIImage *theReturnedImage = yourmethodthatreturnstherenderedimage();
    // do stuff with your image
}

不幸的是,在您完成图像使用之前,它会占用空间,因此您只需快速释放它。