在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 开始支持;

测试方法:


  1. 使用3个组件分别显示一个web页面的内容(例如:http://news.dayoo.com/guangzhou/201512/11/139995_45489706.htm);
  2. 页面加载完后,清空内容,再次加载内容,重复3次;
  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的内存占用对比的更多相关文章

  1. 微信小程序富文本渲染组件html2wxml及html2wxml代码块格式化在ios下字体过大问题

    1.组件使用: 之前微信小程序的富文本渲染组件用的wxParse,对普通富文本确实可以,但是对于代码格式pre标签则无法使用. 下面这个html2wxml很不错,可以支持代码高亮. 详细文档:http ...

  2. iOS之富文本

    之前做项目时遇到一个问题: 使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结果在XCode中查 ...

  3. iOS之富文本(二)

    之前做项目时遇到一个问题:          使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ...

  4. iOS swift 富文本显示 富文本在iOS中使用场景和解决方案

    项目中很多地方都会用到富文本的内容:比如一般的商品详情,视频详情,资讯详情等,运营人员通过后台的富文本编辑器编辑的内容,前端拿到的就是一段富文本的字符串,这富文本大多都是图片和文字的组合.我们今天介绍 ...

  5. iOS - NSMutableAttributedString富文本的实现

    NSMutableAttributedString继承于NSAttributedString(带属性的字符串)能够简单快速实现富文本的效果;不多说直接上效果图和代码,通俗易懂: (一)效果图: (二) ...

  6. iOS开发富文本制作 图片和文字/NSMutableParagraphStyle/NSMutableAttributedString

    /NSMutableParagraphStyle/NSMutableAttributedString 组合使 NSString * titlestr=@"日产GT-R"; NSMu ...

  7. iOS之富文本(一)

    NSAttributedString叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化. 通过以下代码即可实现上面 ...

  8. iOS计算富文本(NSMutableAttributedString)高度

    有时候开发中我们为了样式好看, 需要对文本设置富文本属性, 设置完后那么怎样计算其高度呢, 很简单, 方法如下: - (NSInteger)hideLabelLayoutHeight:(NSStrin ...

  9. iOS -- YYText富文本

    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString: [NSString strin ...

随机推荐

  1. [MySQL优化案例]系列 — 分页优化

    通常,我们会采用ORDER BY LIMIT start, offset 的方式来进行分页查询.例如下面这个SQL: SELECT * FROM `t1` WHERE ftype=1 ORDER BY ...

  2. [POI2010] Intelligence test

    yyl说是用链表O(n)做 但是并脑补不出来. 发现可以用个vector记录一下每个数出现的位置,然后对于每个新序列就二分一下,找下一个数出现的离当前位置最近的位置,更新一下当前位置即可. 时间复杂度 ...

  3. setTimeout(fn,0)的作用分析

    众所周知,大家对setTimeout的用法肯定都比较熟悉了,但是不是还是会经常忘记使用呢,例如博主阿里面试时就忘了,见阿里前端面试. 今天跟大家讨论一下setTimeout(fn,0)的用法,相信很多 ...

  4. Syncfusion在WinPhone8.1实现统计图

    using Syncfusion.UI.Xaml.Charts; public static SfChart InitCompareChart(string fundName, double tenT ...

  5. 转载 - KMP算法祥解

    出处:http://www.cppblog.com/oosky/archive/2006/07/06/9486.html KMP字符串模式匹配详解 来自CSDN     A_B_C_ABC 网友 KM ...

  6. 0208MySQL5.7之Group Replication

    转自http://blog.itpub.net/29510932/viewspace-2055679/ MySQL Group Replication: Hello World! 对测试版(on la ...

  7. 阿里巴巴集团2014年校园招聘系统project师北京笔试题

    第一部分 单选题(前10题,每题2分;后10题,每题3分;共50分.选对得满分,选错倒扣一分,不选得0分.) 1.字符串"alibaba"有 个不同的排列. A. 5040 B. ...

  8. sql系列(基础篇)-前言 课前补充知识

    前言 课前补充知识 Number(p,s) Number(p,s):数字类型,p 表示数字的有效长度(从数字的左边第 1 位不为 0 的開始算起,直到最右边的长度.取值范围 0~38 位),s 表示数 ...

  9. linux中udev简单的用法-->【转】

    本文转载自:http://blog.csdn.net/qq_29729577/article/details/50825134 udev是Linux提供的一种在用户态管理设备的一种机制,udev的详细 ...

  10. ASP.NET Razor - C# and VB Code Syntax

    http://www.w3schools.com/aspnet/razor_syntax.asp Razor supports both C# (C sharp) and VB (Visual Bas ...