在开发过程中,iOS 中实现加载 web 页面主要有两种控件,UIWebView 和 WKWebview,两种控件对应具体的实现方法不同。WKWebView 是苹果在iOS 8中引入的新组件,目的是提供一个现代的支持最新Webkit功能的网页浏览控件,摆脱过去 UIWebView的老、旧、笨,特别是内存占用量巨大的问题。它使用与Safari中一样的Nitro JavaScript引擎,大大提高了页面js执行速度。的。
相比于UIWebView的优势:
在性能、稳定性、占用内存方面有很大提升;
允许JavaScript的Nitro库加载并使用(UIWebView中限制)
增加加载进度属性:estimatedProgress,不用在自己写假进度条了
支持了更多的HTML的属性
具体分析WKWebView的优劣势
1.内存占用是UIWebView的1/4~1/3
2.页面加载速度有提升,有的文章说它的加载速度比UIWebView提升了一倍左右。
3.更为细致地拆分了 UIWebViewDelegate 中的方法
4.自带进度条。不需要像UIWebView一样自己做假进度条(通过NJKWebViewProgress和双层代理技术实现),技术复杂度和代码量,根贴近实际加载进度优化好的多。
5.允许JavaScript的Nitro库加载并使用(UIWebView中限制)
6.可以和js直接互调函数,不像UIWebView需要第三方库WebViewJavascriptBridge来协助处理和js的交互。
7.不支持页面缓存,需要自己注入cookie,而UIWebView是自动注入cookie。
8.无法发送POST参数问题
这个是WKWebView比UIWebView内存方面的优化比较:《实测:UIWebView 与WKWebView 性能内存优化对比》 https://www.jianshu.com/p/181889939a85
iOS8.0是2014年9月17日发布了,距离2017年已经有近三年了。现在使用ios10.0以下的系统已经很少了,iPhone 6plus的初始操作系统的iOS8.4(iPhone 6和iPhone 6 plus在苹果的手机占有还很高),iOS8.0以下的系统已经可以忽略了,不能让1%的用户影响99%的用户体验。所以WKWebView代替UIWebView是大趋势。