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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
IOS Html富文本渲染方式:DTCoreText、WKWebView、UIWebView的内存占用对比的更多相关文章
- 微信小程序富文本渲染组件html2wxml及html2wxml代码块格式化在ios下字体过大问题
1.组件使用: 之前微信小程序的富文本渲染组件用的wxParse,对普通富文本确实可以,但是对于代码格式pre标签则无法使用. 下面这个html2wxml很不错,可以支持代码高亮. 详细文档:http ...
- iOS之富文本
之前做项目时遇到一个问题: 使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结果在XCode中查 ...
- iOS之富文本(二)
之前做项目时遇到一个问题: 使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ...
- iOS swift 富文本显示 富文本在iOS中使用场景和解决方案
项目中很多地方都会用到富文本的内容:比如一般的商品详情,视频详情,资讯详情等,运营人员通过后台的富文本编辑器编辑的内容,前端拿到的就是一段富文本的字符串,这富文本大多都是图片和文字的组合.我们今天介绍 ...
- iOS - NSMutableAttributedString富文本的实现
NSMutableAttributedString继承于NSAttributedString(带属性的字符串)能够简单快速实现富文本的效果;不多说直接上效果图和代码,通俗易懂: (一)效果图: (二) ...
- iOS开发富文本制作 图片和文字/NSMutableParagraphStyle/NSMutableAttributedString
/NSMutableParagraphStyle/NSMutableAttributedString 组合使 NSString * titlestr=@"日产GT-R"; NSMu ...
- iOS之富文本(一)
NSAttributedString叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化. 通过以下代码即可实现上面 ...
- iOS计算富文本(NSMutableAttributedString)高度
有时候开发中我们为了样式好看, 需要对文本设置富文本属性, 设置完后那么怎样计算其高度呢, 很简单, 方法如下: - (NSInteger)hideLabelLayoutHeight:(NSStrin ...
- iOS -- YYText富文本
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString: [NSString strin ...
随机推荐
- centos7系统修改内核
修改centos6的内核启动顺序,只需要修改/etc/grub.conf 里的default项配置即可.那么centos7系统该如何修改呢? 下面就centos7系统修改内核,做如下记录: 一般在编译 ...
- NFS实时备份
方法一(inotify+rsync): 1.安装inotify-tools(客户端)[监听工具],实现数据属实备份检查目录是否有如下文档,没有表示操作系统不支持 ls -l /proc/sys/fs/ ...
- PHP AES cbc模式 pkcs7 128加密解密
今天在对接一个第三方接口的时候,对方需要AES CBC模式下的加密.这里简单写一个demo class Model_Junjingbao extends Model { private static ...
- 【codeforces 798B】Mike and strings
[题目链接]:http://codeforces.com/contest/798/problem/B [题意] 给你n个字符串; 每次操作,你可以把字符串的每个元素整体左移(最左边那个字符跑到最后面去 ...
- Spring MVC学习总结(2)——Spring MVC常用注解说明
使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02 之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...
- Sublime Text 3常用插件—Emmet
原文链接:http://www.cnblogs.com/easy-blue/p/6617852.html 摘要: 安装请看上一篇Sublime Text—安装,和sublime自带快捷键一起用,写ht ...
- Github Pages 建立过程记录
之前建立过一个測试页面. 如今在折腾CreateJS 试着把离线版的文档传到github pages上面. 第一步:创建Repository 第二步:本地初始化 主要命令:git init 第三步:复 ...
- Mybatis结合Spring注解自己主动扫描源代码分析
作为一个想做架构师的程序猿,必须是一个优秀的程序猿.在引入某一个框架的时候,必需要研究源代码,将新的开源框架的风险变为可控性. 1.Spring结合Mybatis最经常使用的配置. <!--理论 ...
- C语言中为什么要使用enum
转载请注明出处,否则将追究法律责任http://blog.csdn.net/xingjiarong/article/details/47275971 在C语言中有一个关键字是enum,枚举类型,不知道 ...
- Linux 获取设备树源文件(DTS)里的资源【转】
本文转载自:http://blog.csdn.net/keleming1/article/details/51036000 http://www.cnblogs.com/dyllove98/archi ...