你如何清除 UIWebView 的缓存?

Posted

技术标签:

【中文标题】你如何清除 UIWebView 的缓存?【英文标题】:How do you clear a UIWebView's cache? 【发布时间】:2012-01-03 18:47:08 【问题描述】:

基本上,我需要知道如何让 UIWebView 在您终止应用程序时清除所有内容。基本上,这包括 webView 通过使用而持有的所有 cookie 和信息。

有什么方法可以简单的清除它,让它每次都像新的一样?

【问题讨论】:

好问题...我正在编辑您的问题以删除 Xcode 标记和标题中的单词,因为这个问题与 IDE 完全无关,但与 ios 和 UIWebView 无关。 “当您终止应用程序时”是什么意思?什么时候移到后台? 是的,我只需要删除它跟踪的所有内容的信息 【参考方案1】:

UIWebView 不缓存,它使用的是NSURLConnection。以下任何一项曾经有效,并遵循NSURLCache的文档:

// remove all cached responses
[[NSURLCache sharedURLCache] removeAllCachedResponses];

// set an empty cache
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];

// remove the cache for a particular request
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];

但我不确定现在是否可以(iOS 5)。其他选项使用自定义缓存:SDURLCache 或 overriding connection:withCacheResponse:。如果您发现当前行为是什么,请发表评论。

【讨论】:

第一个和第三个在你把它们扔进去时编译。但是,第二个似乎不起作用,抛出错误“initializer Element is not a compile time constant”。我不确定,但你知道如何解决这个问题吗?可能是我放错地方了? 也许这不是我所需要的。谷歌会跟踪事情,我希望清除 cookie 等会删除搜索历史等。这只是为了实验。

以上是关于你如何清除 UIWebView 的缓存?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIWeb 视图控制器的内容分享到社交网站?

如何清除/禁用 UIWebView 的浏览历史记录

清除 UIWebview 缓存

拨打电话和清除缓存

如何控制 UIWebView 上的触摸? (苹果手机)

如何在 `UIWebView` 控件中使用`UIKeyInput` 协议?