自iOS8以來(lái)新出的WKWebView,大大優(yōu)化了UIWebView的內(nèi)存飆升問(wèn)題,使得開(kāi)發(fā)者迫不及待的用它來(lái)替換掉UIWebView,iOS8剛出,作者我就趕緊把項(xiàng)目里的webView都替換成WKWebView了,然而....當(dāng)我替換完后發(fā)現(xiàn)...我去!WKWebView并沒(méi)有清除緩存的功能,即使使用了以下代碼:
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內(nèi)的緩存,依舊沒(méi)有清除掉,該有的Cookie還有,該有測(cè)cache還是存在!無(wú)果,最終還是淪落使用UIWebView的下場(chǎng)~~~!然而我們等到了iOS9!!!沒(méi)錯(cuò)!WKWebView的緩存清除API出來(lái)了!代碼如下:
這是刪除所有緩存和cookie的
NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];//// Date fromNSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];//// Execute[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{// Done}];當(dāng)然,你也可以選擇只刪除部分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是一個(gè)數(shù)組,可以放進(jìn)數(shù)組的值為:/*WKWebsiteDataTypeDiskCache,WKWebsiteDataTypeOfflineWebapplicationCache,WKWebsiteDataTypeMemoryCache,WKWebsiteDataTypeLocalStorage,WKWebsiteDataTypeCookies,WKWebsiteDataTypesessionStorage,WKWebsiteDataTypeIndexedDBDatabases,WKWebsiteDataTypeWebSQLDatabases*/這樣你就可以按你自己要求清除些什么啦!
(最后PS:WKWebView清除緩存只能iOS9使用,低于iOS9運(yùn)行會(huì)崩潰哦!所以,為了適配iOS7和iOS8,還是要做版本判斷,相信WKWebView取代UIWebView是指日可待的!)
轉(zhuǎn)自:http://www.jianshu.com/p/186a3b236bc9
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注