美文网首页锻炼吃饭的家伙
WKWebView及其与UIWebView对比的优缺点

WKWebView及其与UIWebView对比的优缺点

作者: Tenloy | 来源:发表于2018-11-19 16:38 被阅读130次

WKWebView

# 概述

WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨重难用、内存泄漏的 UIWebView。WKWebView 拥有60fps滚动刷新率、和 safari 相同的 JavaScript 引擎等优势。支持最新的Webkit框架功能,使用与Safari中一样的Nitro JavaScript引擎,大大提高了页面js执行速度。

# 兼容性

WKWebView是苹果iOS8.0之后提供的,发布与2014年9月,距今已经4年。
现在使用ios10.0以下的系统已经很少了,拒最新统计,iPhone OS8.0及以下的系统占比已经不足1%,已经可以忽略不计了,不能让1%的用户影响99%的用户体验。所以WKWebView在使用兼容上已经没有任何阻碍了。

WKWebView的优缺点

# 优点

  • 性能和稳定性的大幅提高

  • 内存占用的减少,大概是UIWebView的1/4 - 1/3 参考链接

  • 支持更多HTML5、JS特性

    • 允许JavaScript的Nitro的库加载并使用(移动设备的 Safari 使用 Nitro 引擎,但是 UIWebView 不包括 JIT 编译,所以不支持,体验会慢一些)
  • 60fps的刷新率以及内置手势的支持

  • 增加了新的代理方法,可控性更高

  • estimatedProgress属性实现进度条

    • 不需要像UIWebView一样自己做假进度条(通过NJKWebViewProgress和双层代理技术实现),技术复杂度和代码量,根贴近实际加载进度优化好的多。
  • JS交互上更方便

    • 可以和js直接互调函数,不像UIWebView需要第三方库WebViewJavascriptBridge来协助处理和js的交互。

       addScriptMessageHandler//OC注册供JS调用的方法
       [[_webView configuration].userContentController addScriptMessageHandler:self name:@"methodName"];
      
       //OC在JS调用方法做的处理
      - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
      {
          NSLog(@"JS 调用了 %@ 方法,传回参数 %@",message.name,message.body);
      }
      //JS调用
      window.webkit.messageHandlers."methodName".postMessage(null);
      
      1. 只接受一个参数,因此如果需要传递多个参数,可以将参数做成json字符串、字典、数组进行传递
      2. ios的参数不能不传,哪怕只传个空字符串
      

# 缺点

  • 不自带cookie
  • 获取cookie
  • 不支持自定义NSURLProtocol,否则无法发送POST参数

参考链接: https://www.jianshu.com/p/86d99192df68

相关文章

网友评论

    本文标题:WKWebView及其与UIWebView对比的优缺点

    本文链接:https://www.haomeiwen.com/subject/fxsafqtx.html