4

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

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

1 回答 1

3

由于图像很大,内存会跳跃 - 如果您确定不再需要它,则应该将使用返回图像的任何位置包装在自动释放块中:

例如

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

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

于 2013-12-31T20:06:46.057 回答