当前位置:  开发笔记 > 前端 > 正文

如何从UIWebview或dealloc UIWebview中删除缓存

如何解决《如何从UIWebview或deallocUIWebview中删除缓存》经验,为你挑选了2个好方法。

每次我加载一个新页面时UIWebView,前面加载的页面会显示很短的时间.

我该如何清除缓存?另一种可能性是dealloc UIWebview.我试过了,但我UIWebView总是"空".应该如何allocdealloc在这种情况下怎么办?

我注意到它UIWebView消耗了大约10 MB RAM.现在UIWebView加载了ViewController.视图是自动释放的,UIWebView也是自动释放的.每次取消分配WebView不是更好吗?

解:

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    CGRect frame = CGRectMake(0, 0, 320, 480);
    self.webView = [[[UIWebView alloc]initWithFrame:frame] autorelease];
    self.webView.scalesPageToFit = YES;
    [self.view addSubview:self.webView];
}

- (void) viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];

    [self.webView removeFromSuperview];
    self.webView = nil;
}

小智.. 28

我有几乎相同的问题.我希望清除webview缓存,因为每次我重新加载一个本地网页时UIWebView,都会显示旧网页.所以我通过简单地设置cachePolicy请求的属性找到了解决方案.使用a NSMutableURLRequest设置此属性.所有这一切都可以正常工作,重新加载UIWebView.

NSURL *url = [NSURL fileURLWithPath:MyHTMLFilePath]; 
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
 [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
 [self.webView loadRequest:request];

希望有所帮助!



1> 小智..:

我有几乎相同的问题.我希望清除webview缓存,因为每次我重新加载一个本地网页时UIWebView,都会显示旧网页.所以我通过简单地设置cachePolicy请求的属性找到了解决方案.使用a NSMutableURLRequest设置此属性.所有这一切都可以正常工作,重新加载UIWebView.

NSURL *url = [NSURL fileURLWithPath:MyHTMLFilePath]; 
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
 [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
 [self.webView loadRequest:request];

希望有所帮助!


如果我使用loadHtmlString怎么办?每次loadHtmlString时如何清除缓存?
无论出于何种原因,这都没有解决我的问题.我猜它是API中的一个错误.

2> mips..:

我对此问题的解决方案是以UIWebView编程方式创建viewWillAppear:并将其发布viewDidDisappear:,如下所示:

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    self.webView = [[[UIWebView alloc]initWithFrame:exampleFrame] autorelease];
    self.webView.scalesPageToFit = YES;
    self.webView.delegate = self;
    self.webView.autoresizingMask = webViewBed.autoresizingMask;
    [exampleView addSubview:self.webView];
}
- (void) viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];

    [self.webView removeFromSuperview];
    self.webView.delegate = nil;
    self.webView = nil;
}

如果你这样做并且你UIWebView没有被释放,你应该检查它的保留计数并了解谁保留它.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有