IOS Html富文本渲染方式:DTCoreText、WKWebView、UIWebView的内存占用对比
在app的内容页(详情页)中,富文本的显示一直是经常需要处理的问题,而通常在后端的富文本编辑中,Html应用比较普遍,所以其实需要处理的Html富文本显示的问题,以下这三种方式肯定不是最优的显示Html富文本的方式,只是相对简单的解决方案,对前后端的转换要求少,可以快速集成。
以下对这3种方式进行内存的测试对比,毕竟详情页是相对比较大,而且打开频率高的页面,所以内存占用是必须要考虑的问题。
基本环境:
- Objective-C
- Xcode 6.4
- Deployment Target IOS 8.0
- DTCoreText 版本:1.6.16
说明:
- DTCoreText:第三方富文本显示组件,支持Html转换为 NSAttributedString;
- WKWebView:IOS 的WebKit框架的浏览器组件,从IOS 8.0 开始支持;
- UIWebView:IOS 的UIKit框架的浏览器组件,从IOS 2.0 开始支持;
测试方法:
- 使用3个组件分别显示一个web页面的内容(例如:http://news.dayoo.com/guangzhou/201512/11/139995_45489706.htm);
- 页面加载完后,清空内容,再次加载内容,重复3次;
- 比较3个组件所占用的内存情况;
内存调试工具:Instruments
测试结果:
DTCoreText
WKWebView
UIWebView
运行期的内存占用: DTCoreText < WKWebView < UIWebView
运行结束后的内存占用:WKWebView < DTCoreText < UIWebView
UIWebView一直被人诟病的内存占用问题依旧没有解决,如果需要打开的Html页面比较复杂(尤其是有不少js的)还是慎用吧,新的WKWebView 确实比UIWebView 在内存管理上做得更好,如果app可以抛弃IOS 7 或以下版本,值得使用,至少在内存占用上已经跟 原生的NSAttributedString 差距没那么大了,在IOS设备内存和性能更高的情况下,差距会更小,而纯Html 页面灵活度会更高。
之前在使用UIWebView的时候,试过各种释放内存的方法,包括设置 NSURLCache,清空NSURLCache 等方法,但实际作用都不大,所以在测试中并没有使用这些方式,只是使用 [_webContent loadHTMLString:nil baseURL:nil]; 进行清空内容;
作者:tumg的LNMP_IOS小集
链接:https://www.jianshu.com/p/9f5ac4d47ef4
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最新文章
- dddddd
- gc是什么,什么时候需要gc
- 4. Linux常用命令
- 夺命雷公狗-----React---3--标签的规则
- 思维导图XMiand
- .net自定义事件,经典简单实例代码
- 判断checked是否选中
- C#3.0 LINQ 操作符
- redhat 5.0 python2.4升级到2.7
- [uiview animation ...] 这个函数有多少没有认识的可能!翻盘效果 上下左右怎么翻都不怕
- Tinyxml 操作XML
- 在Ubuntu Desktop打开终端的2种方式
- canvas 弹幕效果
- 手机自动化测试:appium源码分析之bootstrap十七
- RDay1-Problem 1 A
- maven加载springboot project
- MySql5.5安装详细说明
- Leetcode - 517 Super Washing Machines
- ORM for Net主流框架汇总
- pytest.10.使用fixture参数化测试预期结果
热门文章
- HDU - 2973 - YAPTCHA
- 推荐一个同步Mysql数据到Elasticsearch的工具
- Maven使用package打包Spring Boot时出现:Unable to find a single main class from the following candidates的问题解决
- 为什么pthread_cond_wait须要传递mutex參数
- 手动重启weblogic脚本
- Tomcat扩展——监控
- 汉澳sinox2014x64server已经能够下载
- C#实现动态调用Windows DLL
- Date and time types
- 【转】iOS程序自动检测更新的实现 -- 思路不错