WKWebView-一個美麗的半成品

image07.png

WKWebView自推出之后,得到不少同學的贊揚。主要的贊揚集中在2個方面:加載快,CPU和內存耗用都很小。
很少有人說這個東西的壞話。而我,則來潑2盆冷水。我親身使用之后,得出的結論是:WKWebView只是Apple的一個半成品而已,并不能在所有的場合下替換UIWebView(或者Cocoa中的WebView)。

WKWebView的第一個缺陷:加載本地資源有bug

經常有需求需要加載HTML5的內容。在這種場景下,可能使用WKWebView會遇到一些問題。
你可以使用loadHTMLString 來加載頁面,但是,如果HTML字符串中有本地資源的話,你會發現不會加載。
當然有辦法可以繞過去,一個辦法是在應用內嵌入一個提供HTTP服務的組件。但是但是,這樣做多惡心啊!
另一個辦法,有人發現WKWebView并不是完全不能加載本地文件,如果文件放在temp目錄下,還是可以加載的。于是,每次將資源靠背到那個目錄(實現方法參考http://stackoverflow.com/questions/24882834/wkwebview-not-loading-local-files-under-ios-8
但是但是,這樣做不光惡心,而且嘔吐啊

WKWebView的請求不可以被NSURLProtocol截獲

使用NSURLProtocol攔截應用內的NSURLRequst請求是一種高超的技術,可以實現自定義的本地緩存等方案。這種方法既可以攔截UIWebView的請求,也可以攔截通過代碼使用NSURLConnect或者NSURLSession發出的請求。
不過,WKWebView卻是個例外。
補充:
@3121d806fb53 提出在github上有人針對這個問題整了個解決辦法。經 @深淵漫步者亞爾特留斯 實測有效。

綜上,WKWebView只是Apple的一個半成品而已,需要酌情使用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容