關(guān)于UIImage的優(yōu)化

在加載圖片中,我們常常用的最多的就是 UIImage(named:"image"),這個方法的優(yōu)點就是可以把圖片緩存在內(nèi)存當(dāng)中,讀取的時候非常的快,但是有個缺點就是會重復(fù)的創(chuàng)建圖片緩存,如下圖:

UIImage.png

再看看用UIImage加載5萬個時內(nèi)存的消耗

UIImage.gif

用UIImage消耗了23.4的memory
接下來使用自定義的SwiftImage加載5萬個圖片內(nèi)存的消耗

SwiftImage.png

SwiftImage.gif

可以看到自定義的SwiftImage消耗的內(nèi)存為13.1的memory


接下來看看這個SwiftImage類能否讓UIImageView顯示圖片

Paste_Image.png

上面兩個是系統(tǒng)的,下面兩個是自定義的

Paste_Image.png

結(jié)果表明,自定義的SwiftImage是完全有效的


實現(xiàn)思路

創(chuàng)建一個全局的字典[String : UIImage],key是圖片的名字,value是圖片的對象,在加載圖片的時侯,先判斷這個圖片的名字是否和字典的key一樣,如果是,說明這個圖片已存在內(nèi)存當(dāng)中,這時候可以用imageView.image = dic["image.jpg"]取出來,如果不是,就

dic["image.jpg"] = UIImage(named:"image.jpg")
imageView.image = dic["image.jpg"]

當(dāng)然上面只是實現(xiàn)的具體思路,接下來就上我自己的封裝的類

swift
import UIKit

// 自己封裝的單例
class MYImage {
private var imageDic: [String: UIImage?] = Dictionary()

class var shared: MYImage {
struct Inner {
static let instance: MYImage = MYImage()
}
return Inner.instance
}
func imageName(name name: String) -> UIImage? {
if imageDic.keys.count == 0 {
imageDic[name] = UIImage(named: name)
return imageDic[name]!
}
for key in imageDic.keys {
if key == name {
return imageDic[name]!
} else {
imageDic[name] = UIImage(named: name)
return imageDic[name]!
}
}
return nil
}
}

//將單例封裝在這個方法中
func SwiftImage(name name: String) -> UIImage? {
//調(diào)用單例
return MYImage.shared.imageName(name: "image.jpg")
}

#最后
創(chuàng)建單例和字典也需要消耗內(nèi)存的,所以,只有創(chuàng)建大量重復(fù)的圖片的時侯用這個比較好,其余的都用系統(tǒng)的。
我將測試的demo上傳到了<a >github</a>上
歡迎各位老司機多多點贊^_^
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,324評論 25 708
  • 在第13章“高效繪圖”中,我們研究了和Core Graphics繪圖相關(guān)的性能問題,以及如何修復(fù)。和繪圖性能相關(guān)緊...
    雪_晟閱讀 733評論 0 0
  • 烏孜依帕大娘是哈薩克族人,住在都拉塔邊防哨所旁。都拉塔邊防哨所的官兵們都親切地稱她烏大娘。 每天,太陽還沒探出頭...
    雪鷹飛閱讀 737評論 2 2
  • 不知道為什么,對于電影并不是非常熱衷的自己會對偶然過眼的《一代宗師》念念不忘。在大年夜的前幾天把這部片子細(xì)細(xì)品味,...
    心理學(xué)工作者閱讀 11,263評論 2 13
  • 我們或在逐夢或在趕路,我們喜歡和人交談,交談那夢那路。我們的夢破碎我們的路在撕裂,我們喜歡與人交談,談那碎夢談那裂...
    獅子777閱讀 265評論 0 0

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