SDWebImage框架學(xué)習(xí)(一)

SDWebImage的最大并發(fā)數(shù)是多少?

在類SDWebImageDownloader中齐婴,默認(rèn)并發(fā)數(shù)為
6(_downloadQueue.maxConcurrentOperationCount = 6)稠茂;
也可以修改maxConcurrentDownloads設(shè)置其下載并發(fā)數(shù)睬关;

SDWebImage緩存周期

SDWebImage緩存周期為一周,可以在類SDImageCache里面有kDefaultCacheMaxCacheAge常量电爹,定義的緩存時間丐箩;static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week

SDWebImage 緩存圖片命名規(guī)則

為了防止名稱重復(fù),對其進行 md5 運算;

默認(rèn)下載的超時時長是多少?

默認(rèn)為15秒涎嚼,可以在類SDWebImageDownloader中設(shè)置downloadTimeout

cleanDisk的執(zhí)行過程

i. 先遍歷所有的緩存文件挑秉,記錄過期的文件苔货,計算緩存文件的總大小
ii. 刪除過期的文件
iii. 判斷maxCacheSize的值是否>0立哑,如果大于0再判斷緩存的文件總大小是否大于maxCacheSize
iv.如果緩存文件的總大小超過maxCacheSize铛绰,刪除最早的文件
注意:.jpg产喉、.gif等文件需要把擴展名填上,png不需要

SDWebImages是如何識別圖片類型的这嚣?

NSData+ImageContentType.m中塞俱,根據(jù)圖片文件十六進制數(shù)據(jù)的第一個字節(jié)判斷

+ (NSString *)sd_contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];
    switch (c) {
        case 0xFF:
            return @"image/jpeg";
        case 0x89:
            return @"image/png";
        case 0x47:
            return @"image/gif";
        case 0x49:
        case 0x4D:
            return @"image/tiff";
        case 0x52:
            // R as RIFF for WEBP
            if ([data length] < 12) {
                return nil;
            }

            NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
            if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
                return @"image/webp";
            }

            return nil;
    }
    return nil;
}

SDImageCacheType 緩存類型

SDImageCacheTypeNone 永不緩存,但是從網(wǎng)上下載
SDImageCacheTypeDisk 只緩存到磁盤上
SDImageCacheTypeMemory 只緩存到內(nèi)存中

SDWebImageDownloaderProgressBlock 下載進度

typedef void(^SDWebImageDownloaderProgressBlock)(NSInteger receivedSize, NSInteger expectedSize);
progress 參數(shù):
receivedSize 接收到的字節(jié)數(shù)
expectedSize 期望下載的字節(jié)數(shù)
//乘1.0是為了轉(zhuǎn)換成float類型
float progress = receivedSize * 1.0 / expectedSize;
例如:
NSURL *url = [NSURL URLWithString:@"http://picview01.baomihua.com/photos/20120624/m_14_634761470842343750_15728444.jpg"]; 
[self.imageView sd_setImageWithURL:url placeholderImage:nil options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
//乘1.0是為了轉(zhuǎn)換成float類型
float progress = receivedSize * 1.0 / expectedSize;
NSLog(@"下載進度 %f",progress);
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"完成");
}];

下載順序SDWebImageDownloaderExecutionOrder

typedef  NS_ENUM(NSInteger,SDWebImageDownloaderExecutionOrder) {
      //以隊列的方式,按照先進先出的順序下載九秀。這是默認(rèn)的下載順序
    SDWebImageDownloaderFIFOExecutionOrder,
      //以棧的方式粘我,按照后進先出的順序下載。
    SDWebImageDownloaderLIFOExecutionOrder
};

SDImageCache是怎么做數(shù)據(jù)管理的

SDImageCache分兩個部分友酱,一個是內(nèi)存層面的柔纵,一個是硬盤層面的。內(nèi)存層面的相
當(dāng)是個緩存器或详,以Key-Value的形式存儲圖片郭计。當(dāng)內(nèi)存不夠的時候會清除所有緩存圖
片。用搜索文件系統(tǒng)的方式做管理梧乘,文件替換方式是以時間為單位,剔除時間大于
一周的圖片文件夹供。當(dāng)SDWebImageManager向SDImageCache要資源時仁堪,先搜索內(nèi)存
層面的數(shù)據(jù),如果有直接返回鸟辅,沒有的話去訪問磁盤莺葫,將圖片從磁盤讀取出來,然
后調(diào)SDWebImageDecoder做Decoder洒缀,將圖片對象放到內(nèi)存層面做備份欺冀,再返回調(diào)用層。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饺饭,一起剝皮案震驚了整個濱河市瘫俊,隨后出現(xiàn)的幾起案子悴灵,更是在濱河造成了極大的恐慌,老刑警劉巖川尖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茫孔,死亡現(xiàn)場離奇詭異缰贝,居然都是意外死亡,警方通過查閱死者的電腦和手機剩晴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壹将,“玉大人毛嫉,你說我怎么就攤上這事妇菱。” “怎么了辛臊?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵彻舰,是天一觀的道長候味。 經(jīng)常有香客問我,道長尚胞,這世上最難降的妖魔是什么帜慢? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任粱玲,我火速辦了婚禮,結(jié)果婚禮上抽减,老公的妹妹穿的比我還像新娘。我一直安慰自己昧廷,他們只是感情好偎箫,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布淹办。 她就那樣靜靜地躺著,像睡著了一般速挑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翅萤,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天腊满,我揣著相機與錄音碳蛋,去河邊找鬼胚泌。 笑死,一個胖子當(dāng)著我的面吹牛肃弟,可吹牛的內(nèi)容都是我干的玷室。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼笤受,長吁一口氣:“原來是場噩夢啊……” “哼穷缤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起感论,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤绅项,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后比肄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體快耿,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年掀亥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妥色。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡搪花,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嘹害,到底是詐尸還是另有隱情撮竿,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布笔呀,位于F島的核電站幢踏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏许师。R本人自食惡果不足惜房蝉,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一僚匆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搭幻,春花似錦咧擂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至续扔,卻和暖如春攻臀,著一層夾襖步出監(jiān)牢的瞬間焕数,已是汗流浹背纱昧。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留堡赔,地道東北人识脆。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像善已,于是被迫代替她去往敵國和親灼捂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容