夏天到了,WWDC和AKB48总选举也到了。话说当昨天看到瘫瘫拿到第一的时候,真是发自内心的欣喜。但去年写了AKB48总选举,今年谈谈正事。保留着对浏览器的余热,让我们说说iOS 8 的WebKit吧。 WWDC 2014前几天,就有人发现了苹果向WebKit开源项目提交了一些很令人兴奋的代码,暗示了OS X和iOS,特别是iOS上的WebKit架构有所变化。果不其然,WWDC上公布了iOS的新框架WebKit.framework,正式推出了新的网页浏览控件WKWebView。 曾经的UIWebViewWebKit在给人的印象,是一个浏览引擎,貌似只是和网页有关,其实在OS X和iOS上,多于一行的文字渲染,都和WebKit有关。浏览网页,在iOS上,使用的是UIKit.framework的UIWebView;在OS X上,使用的是WebKit.framework的WebView。 更多细节不讨论,但让人最不解的就是,到底受限于什么条件,苹果在推出iOS的时候,封装了一个貌似很简洁,其实功能受限、效率低下的UIWebView。我揣摩了一下苹果的小心眼,当时得出的结论是:
iOS 8 的WKWebViewAnders Carlsson,Safari以及WebKit工程师,也是这一次「Introducing the Modern WebKit API」的主讲人,一上来就说,总有开发者,特别是iOS平台上的,向他们抱怨说,开发者需要一个功能更加强大的网页浏览控件,然后,他们就推出了「The Modern WebKit API」。(「Modern」这个词,简直用得出神入化,惊天地泣鬼神,很好体现了苹果的壕气。) 具体有什么变化呢:
API苹果终于想通了一个事情:OS X上的WebView,功能很强大,可惜没人用,第三方浏览器用的都是自己的引擎,因此无法上架AppStore,可是谁在意呢;iOS上的UIWebView,功能少得不忍直视,用自家的引擎嘛,又上不了AppStore。而在iOS平台,能否上架AppStore,可是事关生死的事情,这点连Chrome都不得不低头。 从公开的API来看,之前开发者面对的是UIWebView只是一个头文件,现在面对的是一整个framework。大致浏览了下功能,相比于iOS的UIWebView,功能增强了一个Level;相比于OS X的WebView,功能缺失了一个Level。扯平了。 今天我用之前的Demo,将UIWebView替换成WKWebView,基本可以无缝替换。那么相比于UIWebView,WKWebView还开放了什么呢?
更多细节,可以查看WebKit Objective-C Framework Reference。 总的来说,苹果鼓起勇气,第一次开放了如此多的接口,但却仍然不够彻底。这些功能,在UIWebView时代,都可以用私有API解决;而使用了WKWebView之后,在某些方面,依然显得不够用的样子——比方说HTTP和HTTPS验证,仍然没有公开接口可以处理;另外WebResourceLoadDelegate的缺失,也是一大痛点。 2014.7.8 iOS8 beta3 更新Webkit.framework,如下:
性能待续 多进程模型待续 参考WebKit Objective-C Framework Reference |
|
来自: jerry_tom123 > 《app》