SDWebImage 梳理
1.cancel 取消正在下載的任務(wù)。
當(dāng)新圖片被下載時(shí)燃乍,第一步的判斷是是否有正在下載的任務(wù),如果有的話取消當(dāng)前下載任務(wù)并刪除原先與view綁定的operation。
如果是在正在從緩存中讀取图柏,取消讀取的operation,若果是從是下載的任務(wù)任连,取消下載的operation蚤吹。
移除進(jìn)行中的回調(diào)block (進(jìn)度Blok 以及完成Bock)
取消下載中任務(wù)(
SDWebImageDownloaderOperation
);移除在下載管理類中記錄的正在下載的operation(
SDWebImageDownloaderOperation
)。移除下載管理類中記錄的任務(wù)(
SDWebImageCombinedOperation
);移除與View 關(guān)聯(lián)的任務(wù)(
SDWebImageCombinedOperation
)
2.placeholder
如果設(shè)置了占位圖裁着,給ImageView 設(shè)置占位圖繁涂。
3.progress
重置進(jìn)度,設(shè)置進(jìn)度回調(diào)block二驰。combinedProgressBlock
4.和view關(guān)聯(lián)正在下載的任務(wù)(SDWebImageCombinedOperation
)
5.download
5.1扔罪、 驗(yàn)證url
5.2、[self.runningOperations addObject:operation];
下載管理類記錄正在下載的任務(wù) (SDWebImageCombinedOperation
)(下載完成以后任務(wù)會被刪除)桶雀;
5.3矿酵、通過url去緩存查找(先查緩存 再查磁盤)
5.4、緩存中沒有找到需要去網(wǎng)絡(luò)下載
[self.URLOperations setObject:operation forKey:url];
下載管理類記錄正在下載的任務(wù)(下載完成以后任務(wù)會被刪除)
在
SDWebImageDownloaderOperation
對象中記錄回調(diào)Block(包括進(jìn)度block 和完成blok)-
[self.downloadQueue addOperation:operation];
把下載任務(wù)加入隊(duì)列矗积,默認(rèn)情況下最大并發(fā)是65 .5全肮、圖片解碼(分兩種,下載過程中解碼(先不提)棘捣、下載完成后解碼)辜腺;
當(dāng)圖片數(shù)據(jù)全部下載完后。會進(jìn)行圖片解碼柱锹,圖片解碼是在一個(gè)異步串行隊(duì)列中進(jìn)行的哪自。
最后:這篇內(nèi)容主要是我對閱讀SDWebImage源碼的一個(gè)簡單的梳理總結(jié),后續(xù)后寫關(guān)于SDWebImage解碼圖片的內(nèi)容禁熏。