谈谈iOS的Safari和UIWebView
来源:互联网 发布:gta5优化很垃圾 编辑:程序博客网 时间:2024/05/22 01:38
打开iOS4.3上的iPad Safari,再跟iOS6.1上的对比,也许你会觉得4.3没有标签栏,不够好用,但那个多窗口的设计却又非常酷。
iPhone上的Safari 4.3也和iPad差不多。这个多窗口的设计,影响了那个年代的第三方浏览器,UC啊,QQ啊都这么学。可是后来呢,iPad上的诸多第三方浏览器都是有标签栏的,Safari估计是被骂多了,在iOS5开始也这么干。
可是其实,iOS4的Safari代码里就已经有关于Tab的代码,可见Safari的重构优化是伴随着发布的,没做完的功能也一起发布,只是不公开。类似的,现在iOS6的代码里,有这么一个API:
-[WebView _setWebGLEnabled:(BOOL)arg1]
大家都知道Safari还没公开支持WebGL,这可否说明iOS7可能就要支持了呢?
iOS的Safari很明显是和Mac的Safari同源的,可是两者在共用代码的设计上,应该是经过了一个反复的设计阶段。早期的iOS Safari效率很低,特别是iPhone上的,打开一个网易首页都要load好半天。之前的研究可以确定iOS为了共用Mac的代码做了不少适配转接的工作,但这也必然带来性能的损耗。随着iOS的版本升级,这些适配带来的损耗在降低,可是Safari功能的升级又会引入更多代码,中和掉了。
看样子,iOS Safari是不会独立发展来获取性能的,要解决也很简单,等待硬件升级就好了……
iOS Safari没有用供普通开发者所使用的UIWebView。iOS的WebKit.framework还没成熟到像Mac那样给开发者使用,就用这个UIWebView作为门面了,它封装得不错,可是功能也实在太有限。市场上那些用UIWebView的第三方浏览器,或多或少地会用与UIWebView相关的non-public API,当然也会用到WebKit.framework的。虽然他们能以不违反apple的规则的方式来使用私有API,但apple肯定是能查出来的,睁只眼闭只眼罢了,难道还能扼杀掉所有第三方浏览器吗。
iOS Safari是直接使用UIWebBrowserView。 UIWebBrowserView和WebView其实有不少函数和设置项是为iOS Safari服务的,UIWebView默认不用。这必然的,还是尽量共用代码嘛,少要些人来维护更多代码。这相当于也是给第三方浏览器一些生存空间,利用Objective-C运行时的特性,自己去挖掘那些Safari用了但UIWebView没用的东西。例如保存form的账号密码,缓存网页,截图什么的。
当然了,Safari单独提供的额外功能,UIWebView是做不到的,例如阅读器,还有键盘上的页内查找。第三方浏览器只好用JavaScript或者后台服务器来做。效果参差不齐,就算比不上Safari也得做嘛,这风不跟就会落后了。
总之,Mac上的Safari版本号基本上是和iphone OS版本号对得上的,基本可以认为iOS Safari、UIWebView和Mac Safari是同步更新的,对用户而言是个好事。4核的iPad出来后,也许再没人说Safari慢了。
- 谈谈iOS的Safari和UIWebView
- iOS Safari和UIWebView对orientationchange事件的实现
- 使用Mac OS X的Safari浏览器调试ios设备上的safari和cordova app(UIWebview)
- 用uiwebview和UITextField做个简易的safari浏览器
- 关于ios,safari和iframe的各种
- iOS 开发技巧之 ---- 使用Mac上的Safari对UIWebView进行调试
- iOS开发的UIWebView
- [IOS]UIWebView的使用
- iOS UIWebView的使用
- IOS UIWebView的使用
- iOS UIWebView 的加载
- iOS UIwebview的加载
- IOS-safari遇到的坑
- iOS - UIWebView和JavaScript互调
- UIWebView---使用Safari进行调试
- iOS 中的UIWebView 和webkit 的联系使用
- iOS UIWebView和WKWebView的JS调用详解
- Android和iOS关于WebView(UIWebView)缓存的看法
- CAS之客户端使用——基于CAS的单点登陆的研究(下)
- 混音器原理及Mixer API函数介绍
- 一个Div包含了多个子Div,并且子Div使用了浮动后,父Div确不能被撑开
- 关于友元类的一些东西
- 信号量,互斥锁,条件变量的区别
- 谈谈iOS的Safari和UIWebView
- openstack nova 基础知识——Quota(配额管理)
- 计算机安全问题(转自cocoachina)
- std::max_element()
- android 滑动菜单SlidingMenu的实现
- CLR via C# 读书笔记1-4 追记
- SQL Server 2005 连接 Oracle 方案
- 指定字符替换
- 吝啬的国度