WKWebView-一个美丽的半成品

WKWebView-一个美丽的半成品_第1张图片
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的一个半成品而已,需要酌情使用。

你可能感兴趣的:(WKWebView-一个美丽的半成品)