IOS Html富文本渲染方式:DTCoreText、WKWebView、UIWebView的內(nèi)存占用對(duì)比

在app的內(nèi)容頁(yè)(詳情頁(yè))中,富文本的顯示一直是經(jīng)常需要處理的問(wèn)題,而通常在后端的富文本編輯中,Html應(yīng)用比較普遍,所以其實(shí)需要處理的Html富文本顯示的問(wèn)題,以下這三種方式肯定不是最優(yōu)的顯示Html富文本的方式,只是相對(duì)簡(jiǎn)單的解決方案,對(duì)前后端的轉(zhuǎn)換要求少,可以快速集成。

以下對(duì)這3種方式進(jìn)行內(nèi)存的測(cè)試對(duì)比,畢竟詳情頁(yè)是相對(duì)比較大,而且打開頻率高的頁(yè)面,所以內(nèi)存占用是必須要考慮的問(wèn)題。

基本環(huán)境:


  • Objective-C
  • Xcode 6.4
  • Deployment Target IOS 8.0
  • DTCoreText 版本:1.6.16

說(shuō)明:


  • DTCoreText:第三方富文本顯示組件,支持Html轉(zhuǎn)換為 NSAttributedString;
  • WKWebView:IOS 的WebKit框架的瀏覽器組件,從IOS 8.0 開始支持;
  • UIWebView:IOS 的UIKit框架的瀏覽器組件,從IOS 2.0 開始支持;

測(cè)試方法:


  1. 使用3個(gè)組件分別顯示一個(gè)web頁(yè)面的內(nèi)容(例如:http://news.dayoo.com/guangzhou/201512/11/139995_45489706.htm);
  2. 頁(yè)面加載完后,清空內(nèi)容,再次加載內(nèi)容,重復(fù)3次;
  3. 比較3個(gè)組件所占用的內(nèi)存情況;

內(nèi)存調(diào)試工具:Instruments


測(cè)試結(jié)果:


DTCoreText

WKWebView

UIWebView

運(yùn)行期的內(nèi)存占用: DTCoreText < WKWebView < UIWebView
運(yùn)行結(jié)束后的內(nèi)存占用:WKWebView < DTCoreText < UIWebView

UIWebView一直被人詬病的內(nèi)存占用問(wèn)題依舊沒有解決,如果需要打開的Html頁(yè)面比較復(fù)雜(尤其是有不少js的)還是慎用吧,新的WKWebView 確實(shí)比UIWebView 在內(nèi)存管理上做得更好,如果app可以拋棄IOS 7 或以下版本,值得使用,至少在內(nèi)存占用上已經(jīng)跟 原生的NSAttributedString 差距沒那么大了,在IOS設(shè)備內(nèi)存和性能更高的情況下,差距會(huì)更小,而純Html 頁(yè)面靈活度會(huì)更高。

之前在使用UIWebView的時(shí)候,試過(guò)各種釋放內(nèi)存的方法,包括設(shè)置 NSURLCache,清空NSURLCache 等方法,但實(shí)際作用都不大,所以在測(cè)試中并沒有使用這些方式,只是使用 [_webContent loadHTMLString:nil baseURL:nil]; 進(jìn)行清空內(nèi)容;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容