iOS 享元模式

一.什么是享元模式?

享元模式主要用于減少同一類對(duì)象的大量創(chuàng)建,以減少內(nèi)存占用,提高項(xiàng)目流暢度,在iOS開發(fā)中,大家肯定都用過UITableViewCell,UICollectionViewCell,這兩個(gè)類在使用過程中就使用了享元模式,工作原理基本就是:利用重用池重用思想,創(chuàng)建頁面可顯示的cell個(gè)數(shù)的對(duì)象,在頁面滾動(dòng)過程中監(jiān)聽每個(gè)cell的狀態(tài),從頁面消失的cell被放回重用池,將要顯示的cell先去重用池中去取,如果可以取到,則繼續(xù)使用這個(gè)cell,如果沒有多余的cell,就重新創(chuàng)建新的,這樣即使你有100條數(shù)據(jù),也僅僅只會(huì)創(chuàng)建頁面可顯示個(gè)數(shù)的cell對(duì)象,這樣就大大減少了對(duì)象的創(chuàng)建,實(shí)現(xiàn)了大量?jī)?nèi)存占用,導(dǎo)致內(nèi)存泄露的問題

享元模式.png

二.為什么要使用享元模式?

一個(gè)完美的應(yīng)用,不僅僅是界面和功能上的完美,如果一個(gè)應(yīng)用擁有出眾的界面,強(qiáng)大的功能,但是用戶一使用
就卡的不行,或者說有延遲,這樣用戶會(huì)是什么感覺,當(dāng)然蘋果也許不是很明顯,即使你的應(yīng)用再爛,真正在真機(jī)上跑的時(shí)候也不會(huì)出現(xiàn)類似android卡頓的那樣,但是你要是細(xì)心了,還是會(huì)有點(diǎn)發(fā)現(xiàn)的,作為開發(fā)者我們,應(yīng)該去解決這樣的問題,是我們代碼的問題,我們就要去解決

三.怎么使用享元模式?

下面我直接使用UITabelView舉例:

1.重新cell創(chuàng)建方法:

元對(duì)象.png

2.具體實(shí)現(xiàn):

實(shí)現(xiàn).png

3.打印:

打印結(jié)果.png

4.效果圖:

效果圖.png

從代碼中,我們可以看出我需要顯示100個(gè)cell,但是實(shí)際只創(chuàng)建了8個(gè)cell,內(nèi)存占用上相比100個(gè)cell對(duì)象的內(nèi)存縮減到了原來的十分之一,流暢度可想而知

菜鳥教程: http://www.runoob.com/design-pattern/flyweight-pattern.html
百度百科: https://baike.baidu.com/item/享元模式/10541959?fr=aladdin

其他設(shè)計(jì)模式

工廠模式:http://www.itdecent.cn/p/6f3ffb1397f7
責(zé)任鏈模式:http://www.itdecent.cn/p/30475126694a
觀察者模式:http://www.itdecent.cn/p/a6a6e5a8e8bd

最后編輯于
?著作權(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)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評(píng)論 19 139
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,614評(píng)論 30 472
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,007評(píng)論 25 709
  • 1 場(chǎng)景問題# 1.1 加入權(quán)限控制## 考慮這樣一個(gè)問題,給系統(tǒng)加入權(quán)限控制,這基本上是所有的應(yīng)用系統(tǒng)都有的功能...
    七寸知架構(gòu)閱讀 2,581評(píng)論 1 57
  • 現(xiàn)在是2016年12月31日下午五點(diǎn)整,我坐在辦公室里寫下2016年第一篇文字,同時(shí)也是最后一篇文字: 2016年...
    胡萊萊閱讀 297評(píng)論 0 0

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