本文主要是介绍iOS9 WKWebView清除缓存方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
自iOS8以来新出的WKWebView,大大优化了UIWebView的内存飙升问题,使得开发者迫不及待的用它来替换掉UIWebView,iOS8刚出,作者我就赶紧把项目里的webView都替换成WKWebView了,然而....当我替换完后发现...我去!WKWebView并没有清除缓存的功能,即使使用了以下代码:
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];for (cookie in [storage cookies]){
[storage deleteCookie:cookie];
}NSURLCache * cache = [NSURLCache sharedURLCache];
[cache removeAllCachedResponses];
[cache setDiskCapacity:0];
[cache setMemoryCapacity:0];
WKWebView内的缓存,依旧没有清除掉,该有的Cookie还有,该有测cache还是存在!无果,最终还是沦落使用UIWebView的下场~~~!
然而我们等到了iOS9!!!没错!WKWebView的缓存清除API出来了!代码如下:
这是删除所有缓存和cookie的
NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];Date fromNSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];Execute[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{// Done}];
当然,你也可以选择只删除部分
NSSet *websiteDataTypes= [NSSet setWithArray:types];All kinds of data//NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];Date fromNSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];Execute[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{// Done}];
types是一个数组,可以放进数组的值为:
/*WKWebsiteDataTypeDiskCache,WKWebsiteDataTypeOfflineWebApplicationCache,WKWebsiteDataTypeMemoryCache,WKWebsiteDataTypeLocalStorage,WKWebsiteDataTypeCookies,WKWebsiteDataTypeSessionStorage,WKWebsiteDataTypeIndexedDBDatabases,WKWebsiteDataTypeWebSQLDatabases*/
这样你就可以按你自己要求清除些什么啦!
(最后PS:WKWebView清除缓存只能iOS9使用,低于iOS9运行会崩溃哦!所以,为了适配iOS7和iOS8,还是要做版本判断,相信WKWebView取代UIWebView是指日可待的!)
转自:http://www.jianshu.com/p/186a3b236bc9这篇关于iOS9 WKWebView清除缓存方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!