一 題外話
之前寫過一篇最新版SDWebImage的使用,也簡單的介紹了一下原理。這兩天正梳理自己的知識網(wǎng)絡(luò),覺得有必要再閱讀一下源碼,一是看具體實現(xiàn),二是學(xué)習(xí)一下優(yōu)秀開源代碼的代碼風(fēng)格,比如接口設(shè)計,設(shè)計模式,變量命名等等。
既然是第一篇,就要制定一個閱讀源碼的計劃,以什么順序閱讀完全部代碼。我們從最常見的入口切入sd_setImageWithURL,一路下去,最后再閱讀沒有設(shè)計到的部分。
在開始之前強烈建議先去讀我之前的文章:最新版SDWebImage的使用。心里有個大概再去探討細節(jié),效果更佳。
二 入口
我們?yōu)槭裁词褂肧DWebImage,是因為他幫我們實現(xiàn)了圖片的二級緩存,使我們加載圖片更流暢。當然你也可以使用SDWebImage中幾個很棒的工具類,比如SDWebImageDownloader,用來下載圖片?;蛘逽DImageCache用來緩存圖片或者NSData。我們先來看看UIImageView+WebCache中的基本方法:
在UIImageView+WebCache類的最上面,很貼心的貼了一個使用例子,這也是我們很常見的tableViewCell加載圖片的場景
- (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