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