一 題外話
之前寫過一篇最新版SDWebImage的使用,也簡(jiǎn)單的介紹了一下原理。這兩天正梳理自己的知識(shí)網(wǎng)絡(luò),覺得有必要再閱讀一下源碼,一是看具體實(shí)現(xiàn),二是學(xué)習(xí)一下優(yōu)秀開源代碼的代碼風(fēng)格,比如接口設(shè)計(jì),設(shè)計(jì)模式,變量命名等等。
既然是第一篇,就要制定一個(gè)閱讀源碼的計(jì)劃,以什么順序閱讀完全部代碼。我們從最常見的入口切入sd_setImageWithURL,一路下去,最后再閱讀沒有設(shè)計(jì)到的部分。
在開始之前強(qiáng)烈建議先去讀我之前的文章:最新版SDWebImage的使用。心里有個(gè)大概再去探討細(xì)節(jié),效果更佳。
二 入口
我們?yōu)槭裁词褂肧DWebImage,是因?yàn)樗麕臀覀儗?shí)現(xiàn)了圖片的二級(jí)緩存,使我們加載圖片更流暢。當(dāng)然你也可以使用SDWebImage中幾個(gè)很棒的工具類,比如SDWebImageDownloader,用來下載圖片?;蛘逽DImageCache用來緩存圖片或者NSData。我們先來看看UIImageView+WebCache中的基本方法:
在UIImageView+WebCache類的最上面,很貼心的貼了一個(gè)使用例子,這也是我們很常見的tableViewCell加載圖片的場(chǎng)景
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *MyIdentifier = @"MyIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease]; } // Here we use the provided sd_setImageWithURL: method to load the web image // Ensure you use a placeholder image&nbs