我目前有一个在模态视图中显示的UIWebView.它基本上是一个详细视图,提供用户单击链接时的页面视图.当视图被驳回,然后再次提出了(当用户点击另一个链接),先前加载的内容仍然是可见的,"上面"的最后内容的新内容加载.这是有道理的,因为UIWebView的实例在会话之间持续存在,并且仅在需要内存时才会释放.
但是,当模态视图被解除时,我想完全清除UIWebView,以便1)内容被清除,2)内存被释放.到目前为止,我的研究和尝试都没有找到答案.这些链接对我没用:
是否可以释放UIWebView的内存?
重复使用的UIWebView在iPhone上显示以前加载的内容
我已经尝试[[NSURLCache sharedURLCache] removeAllCachedResponses];
将webView设置为nil并在模态视图关闭时手动释放webView无效.干瘪群众的任何想法?
有时loadHTMLString
太慢了.你也可以使用:
[webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
我不确定这是否会释放大量内存...
发布Web视图可能是最好的方法.如果视图位于视图层次结构中(具有超级视图),则必须调用removeFromSuperview以使superview释放视图.
您还可以为空文档加载html字符串:
[webView loadHTMLString:@"" baseURL:nil];
在某些情况下,似乎drawonward和rob建议的方法可能不起作用(可能与正在清除的页面上的CSS有关),但这确实有效:
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
评估javascript通常比加载新请求更快.
[webview stringByEvaluatingJavaScriptFromString:@"document.open();document.close();"];
在我的情况下,我需要立即从其内容清除Web视图,并能够立即开始加载其他内容.既不加载空文档HTML字符串也不用JavaScript清除页面都会产生预期效果.相反,我用过:
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://stackoverflow.com"]]];
这清除了默认背景的视图,并按预期启动了下一页的加载.
我希望这对其他人也有帮助.