iOS 享元模式

一.什么是享元模式?

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

享元模式.png

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

一個完美的應用,不僅僅是界面和功能上的完美,如果一個應用擁有出眾的界面,強大的功能,但是用戶一使用
就卡的不行,或者說有延遲,這樣用戶會是什么感覺,當然蘋果也許不是很明顯,即使你的應用再爛,真正在真機上跑的時候也不會出現類似android卡頓的那樣,但是你要是細心了,還是會有點發現的,作為開發者我們,應該去解決這樣的問題,是我們代碼的問題,我們就要去解決

三.怎么使用享元模式?

下面我直接使用UITabelView舉例:

1.重新cell創建方法:

元對象.png

2.具體實現:

實現.png

3.打印:

打印結果.png

4.效果圖:

效果圖.png

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

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

其他設計模式

工廠模式:http://www.lxweimin.com/p/6f3ffb1397f7
責任鏈模式:http://www.lxweimin.com/p/30475126694a
觀察者模式:http://www.lxweimin.com/p/a6a6e5a8e8bd

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

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