gpt4 book ai didi

ios - renderInContext 抛出崩溃

转载 作者:行者123 更新时间:2023-11-29 11:00:55 25 4
gpt4 key购买 nike

我正在从 webview 渲染图像。所以 renderIncontext 方法在 for 循环中调用了 50 多次。在 20 或 30 次后,我的应用程序因更多内存消耗而崩溃。

我使用了这段代码:

UIGraphicsBeginImageContext(CGSizeMake([w floatValue], [h floatValue]));
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, webview.frame);
[self.webview.layer renderInContext:ctx];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

20 次后它崩溃了。我需要它的解决方案。

为什么会这样?有人知道吗?

最佳答案

听起来您正在一个紧凑的循环中创建大量位图图像。您需要保存所需的图像(如果您需要全部图像,则可能保存在磁盘上而不是内存中),并允许自动释放内存中的图像。将循环主体包裹在 @autorelease block 中,例如:

for (whatever) {
@autorelease {
// Work that makes big autoreleased objects.
}
}

这样你的内存消耗就不会在你的循环中失控。同样,如果您让所有这些 UIImage 对象持久化,您仍然会分配大量内存。将生成的图像保存到磁盘上的临时目录(或其他一些方便的地方),并根据需要单独获取它们。

关于ios - renderInContext 抛出崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15979193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com