gpt4 book ai didi

memory-management - Release Release UIWebView content from the memory,强制app释放内存

转载 作者:行者123 更新时间:2023-12-01 07:58:40 28 4
gpt4 key购买 nike

我正在开发一个使用大量图像的应用程序,我正在使用 UIWebView 使用 JavaScript 代码(我正在使用 UIZE 库)来表示大约 200 张图像,问题当我完成 UIWebView 时,我在 viewWillDisappear

中使用以下代码
-(void)viewWillDisappear:(BOOL)animated {
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[webViews stringByEvaluatingJavaScriptFromString:@"document.open();document.close();"];
}

- (void)viewDidUnload
{
webViews = nil;
}
- (void)dealloc {
[webViews release];
}

但是,从 UIWebView 获取的保留内存仍在内存中,所以我的第一个问题是如何强制应用释放从 UIWebView 获取的内存?

UIImageView 也有同样的问题,我正在使用一张大图像(大约 3072*2024),这将从内存中占用 (3072 * 2024 * 3 = 18 MB),我是一次加载大约 8 张这样的图像,所以保留内存很大,当我试图释放它们时,同样的事情发生了,从每张图像中获取的保留内存仍在内存中(我总是得到表示 Low Memory warning 的警告)。我已经设法加载了大约 2 个该大小的图像以减少保留的内存但是内存不会释放内存直到出现低内存警告,所以,我如何减少和处理大量图像并立即释放保留的内存!?

注意:

我为 [UIImage imageNamed:]; 方法使用了一个破解版本,如下所示:

@implementation UIImage(imageNamed_Hack)

+ (UIImage *)imageNamed:(NSString *)name {
return [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], name ] ];
}
@end

我们将不胜感激。

提前致谢。

最佳答案

在释放并设置为 nil 之前有很多事情要做。

删除所有缓存的 HTTP 响应:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

甚至设置 WebKit 缓存模型:

[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];

将背景设置为任何颜色,以便 WebKit 清理缓存的显示内存:

[webView stringByEvaluatingJavaScriptFromString:@"var body=document.getElementsByTagName('body')[0];body.style.backgroundColor=(body.style.backgroundColor=='')?'white':'';"];

然后关闭文档:

[webView stringByEvaluatingJavaScriptFromString:@"document.open();document.close()"];

关于memory-management - Release Release UIWebView content from the memory,强制app释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343221/

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