iOS SDWebImage 粗談

SDWebImage 作為一個iOS develop 的圖片加載框架之一,為什么它受到那么多iOS developer 的鐘愛呢?

SDWebImage 優(yōu)點:
1、提供了一個UIImageView的Category、UIButton的Category 用來加載網(wǎng)絡(luò)圖片,并且對加載的網(wǎng)絡(luò)圖片的緩存進(jìn)行管理;
2、采用異步方式來下載網(wǎng)絡(luò)圖片;
3、使用memory + disk來緩存網(wǎng)絡(luò)圖片,自動管理緩存;
4、支持 git 動畫 和 WebP 格式;
5、同一個URL 的網(wǎng)絡(luò)圖片不會重復(fù)下載;
6、失效的URL 不會無限重試;
7、耗時操作都在子線程中處理,確保不會阻塞主線程;
8、使用GCD

SDWebImage 加載流程
1、判斷圖片URL 是否為 nil,是則做出錯處理并返回;
2、URL MD5加密生成 key;
3、根據(jù) key 讀取內(nèi)存(memory)緩存, 有則拿到圖片返回,否則往下;
4、根據(jù) key 讀取磁盤(disk)緩存,有則拿到圖片返回,否則往下;
5、根據(jù)URL 下載圖片,下載成功則將圖片保存到 內(nèi)存和磁盤中返回圖片

流程1.1.png

注意:
1、在收到內(nèi)存警告是,SDWebImage SDMemoryCache(繼承NSCache) 會清空所有緩存
2、SDWebImage 會監(jiān)聽APP UIApplicationWillTerminateNotification(程序?qū)⒁粴⑺溃?和 UIApplicationDidEnterBackgroundNotification(程序進(jìn)入后臺時),收到這兩個通知,SDWebImage 會去清除磁盤緩存,同時還會去檢查當(dāng)前磁盤緩存是否大于當(dāng)前磁盤的最大緩存。如果大于,則會根據(jù)我設(shè)置刪除策略去釋放磁盤緩存到最大值的一半,刪除策略有兩種:①、訪問時間:按最久未訪問的方式刪除磁盤緩存;②、更新時間:根據(jù)最久未更新的方式刪除磁盤緩存

?著作權(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)容

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