1、背景:一家项目合作公司,在调用我方提供的网页URL时,由于调用多次网页跳转,导致内存暴涨,app闪退问题。
2、问题排查:该公司使用的是UIWebView来加载网页,建议替换使用WKWebview。
3、亲测:通过使用UIWebview和WKWebView来加载百度(https:www//baidu.com),查看两种方式的app的内存使用情况如图(测试条件同样在模拟器iPhone 7下):
(1)UIWebView方式:
(2)WKWebView方式:
5、反思:了解WKWebView的新特性:
在WWDC2014中,苹果推出了最新的iOS8系统,全新的WebKit中更新的WKWebView控件的新特性与使用方法,它很好的解决了UIWebView存在的内存、加载速度等诸多问题。
新特性:新特性参考链接
(1)在性能、稳定性、功能方面有很大提升(最直观的体现就是上面截图所示的内存使用情况WK是:45M左右,Web是:123M左右);
(2)允许JavaScript的Nitro库加载并使用(UIWebView中限制);
(3)支持了更多的HTML5特性;
(4)高达60fps的滚动刷新率以及内置手势;
(5)将UIWebViewDelegate与UIWebView重构成了14类与3个协议(查看苹果官方文档)(三个协议:WKUIDelegate,WKNavigationDelegate,WKScriptMessageHandler)。
6、问题的研究需要借鉴多方意见,参考的文章有如下:
WKWebView与JS交互的第三方框架:WKWebViewJavascriptBridge;
github地址:https://github.com/marcuswestin/WebViewJavascriptBridge