一、寫在開頭
雖然網(wǎng)上有很多關(guān)于SDWebImage源碼的分析文章,但這些都不是我自己的理解,他們或許能幫助我解決遇到的問題,也可能讓我懈怠,不再去深入探究。SDWebImage源碼理解中是我對(duì)SDWebImage(4.1.2版本)源碼的體會(huì)理解,它并不拘泥于具體的API,而是從我的角度,去理解SDWebImage的源碼設(shè)計(jì)。
由于本人的技術(shù)能力有限,可能會(huì)在理解上有一些錯(cuò)誤,如果大家發(fā)現(xiàn)有問題,歡迎留言,批評(píng)指正。
二、SDWebImage概述
在SDWebImage庫中,主要的類有SDWebImageDecoder(圖片解碼)、SDImageCache(圖片的緩存處理)、SDWebImageDownloader(圖片下載器 )、SDWebImageDownloaderOperation(圖片下載操作)和 SDWebImageManager(SDWebImage的管理類)。
SDWebImageManager持有SDWebImageDownloader和SDImageCache單例,負(fù)責(zé)調(diào)度圖片的異步下載、緩存和獲?。?strong>SDWebImageDownloader負(fù)責(zé)異步圖片下載任務(wù)的調(diào)度,它維持了一個(gè)圖片下載隊(duì)列,隊(duì)列中管理若干SDWebImageDownloaderOperation(NSOperation的子類)下載任務(wù),封裝了圖片的下載任務(wù),支持并發(fā)操作;SDImageCache負(fù)責(zé)下載圖片的緩存和讀??;SDWebImageDecoder負(fù)責(zé)圖片的解碼工作;
總之,SDWebImage庫提供了一整完善的機(jī)制,保證網(wǎng)絡(luò)圖片下載和存取。
三、源碼文章
文章從圖片的解碼、緩存、下載三個(gè)角度去理解SDWebImage源碼。
1、圖片的解碼
具體文章見 篇1:SDWebImage源碼看圖片解碼
建議:理解了SDWebImage中的圖片解碼后,可以去看一下其他同類庫解碼的處理YYImage、FastImageCache和FLAnimatedImage等庫對(duì)解碼的處理(后面有時(shí)間也會(huì)介紹)。
2、圖片的緩存
具體文章見 篇2:SDWebImage源碼看圖片緩存
建議:在理解了SDWebImage中的圖片緩存后,可以看一下YYCache,了解下如何去設(shè)計(jì)一個(gè)高性能的Cache(后面有時(shí)間也會(huì)介紹)。
3、圖片的下載
具體文章見 篇3:SDWebImage源碼看圖片下載(還在碼字中...)
建議:在理解了SDWebImage中的圖片下載后,可以看一下AFNetworking,了解下最主流的網(wǎng)絡(luò)框架庫如何設(shè)計(jì)(后面有時(shí)間也會(huì)介紹)。
End
- 我是南華coder,曾經(jīng)夢想寫詩走天涯,而今埋頭苦思忙coder。