Memory 取消模式视图后清除UIWebView内容(iPhone OS 3.0)

Memory 取消模式视图后清除UIWebView内容(iPhone OS 3.0),memory,iphone-sdk-3.0,uiwebview,modalviewcontroller,Memory,Iphone Sdk 3.0,Uiwebview,Modalviewcontroller,我当前有一个UIWebView,它显示在模式视图中。它基本上是一个细节视图,在用户单击链接时提供页面视图。当视图被取消,然后再次打开时(当用户单击另一个链接时),以前加载的内容仍然可见,新内容加载到最后一个内容的“顶部”。这是有意义的,因为UIWebView的实例在会话之间持续存在,并且仅在需要内存时才会释放 但是,我希望在模式视图被取消时完全清除UIWebView,以便1)清除内容,2)释放内存。到目前为止,我的研究和尝试还没有找到答案。这些链接对我不起作用: 我尝试了[[NSURLCac

我当前有一个UIWebView,它显示在模式视图中。它基本上是一个细节视图,在用户单击链接时提供页面视图。当视图被取消,然后再次打开时(当用户单击另一个链接时),以前加载的内容仍然可见,新内容加载到最后一个内容的“顶部”。这是有意义的,因为UIWebView的实例在会话之间持续存在,并且仅在需要内存时才会释放

但是,我希望在模式视图被取消时完全清除UIWebView,以便1)清除内容,2)释放内存。到目前为止,我的研究和尝试还没有找到答案。这些链接对我不起作用:


  • 我尝试了
    [[NSURLCache sharedullcache]removeAllCachedResponses]
    并将webView设置为零,然后在模式视图关闭时手动释放webView,但无效。干瘪的大众有什么想法吗?

    发布web视图可能是最好的方法。如果视图位于视图层次结构中(具有superview),则必须调用removeFromSuperview以获取superview以释放视图

    您还可以为空文档加载html字符串:

    [webView loadHTMLString:@"<html><head></head><body></body></html>" baseURL:nil];
    
    [webView loadHTMLString:@”“baseURL:nil];
    
    有时
    加载HTMLSTRING
    太慢。您还可以使用:

    [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
    

    我不确定这是否会释放大量内存,尽管…

    在某些情况下,drawnonward和rob建议的方法可能不起作用(可能与正在清除的页面上的CSS有关),但这确实起作用:

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
    

    在我的例子中,我需要立即清除web视图中的内容,并能够立即开始加载其他内容。加载空文档HTML字符串或使用JavaScript清除页面都不会产生预期效果。相反,我使用了:

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://stackoverflow.com"]]];
    
    这将视图清除为默认背景,并按预期启动下一页的加载


    我希望这对其他人也有帮助。

    评估javascript通常比加载新请求更快

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

    我倾向于以下几点:

    [m_webView stringByEvaluatingJavaScriptFromString:@"location.replace('about:blank')"]
    

    完美的可能是可视化清除webview的最简单解决方案。还是不明白为什么loadHTMLString这么慢。可能是因为我正在直接加载另一个页面,当webview开始加载新页面时,它会停止加载和显示空页面。这是最好的解决方案。不知道为什么这不是最好的投票答案。无论如何,回答得很好!!此方法最好的一点是不会调用委托方法webViewDidFinishLoad!顺便说一句,这不会清除pdf格式的内容,有什么想法吗?哇,你解决了我的问题!!!javascript解决方案比加载零字符串解决方案快50%!。。。非常感谢你!你为什么喜欢它?这是我见过的最好的答案。