SDWebImage探究(十六) —— 深入研究圖片下載流程(十)之緩存相關(guān)代理方法調(diào)用

版本記錄

版本號(hào) 時(shí)間
V1.0 2018.02.25

前言

我們做APP斥赋,文字和圖片是絕對(duì)不可缺少的元素授账,特別是圖片一般存儲(chǔ)在圖床里面,一般公司可以委托第三方保存亭枷,NB的公司也可以自己存儲(chǔ)圖片,ios有很多圖片加載的第三方框架搀崭,其中最優(yōu)秀的莫過于SDWebImage叨粘,它幾乎可以滿足你所有的需求,用了好幾年這個(gè)框架瘤睹,今天想總結(jié)一下升敲。感興趣的可以看其他幾篇。
1. SDWebImage探究(一)
2. SDWebImage探究(二)
3. SDWebImage探究(三)
4. SDWebImage探究(四)
5. SDWebImage探究(五)
6. SDWebImage探究(六) —— 圖片類型判斷深入研究
7. SDWebImage探究(七) —— 深入研究圖片下載流程(一)之有關(guān)option的位移枚舉的說明
8. SDWebImage探究(八) —— 深入研究圖片下載流程(二)之開始下載并返回下載結(jié)果的總的方法
9. SDWebImage探究(九) —— 深入研究圖片下載流程(三)之下載之前的緩存查詢操作
10. SDWebImage探究(十) —— 深入研究圖片下載流程(四)之查詢緩存后的block回調(diào)處理
11. SDWebImage探究(十一) —— 深入研究圖片下載流程(五)之SDWebImageDownloadToken和操作對(duì)象的生成和返回
12. SDWebImage探究(十二) —— 深入研究圖片下載流程(六)之下載器到具體下載操作的代理分發(fā)實(shí)現(xiàn)
13. SDWebImage探究(十三) —— 深入研究圖片下載流程(七)之NSURLSession中幾個(gè)代理的基本用法和關(guān)系
14. SDWebImage探究(十四) —— 深入研究圖片下載流程(八)之下載完成代理方法的調(diào)用
15. SDWebImage探究(十五) —— 深入研究圖片下載流程(九)之身份驗(yàn)證質(zhì)詢代理方法調(diào)用

SDWebImageDownloaderOperation中緩存的代理方法

主要對(duì)應(yīng)下面這一小段代碼轰传。

- (void)URLSession:(NSURLSession *)session
          dataTask:(NSURLSessionDataTask *)dataTask
 willCacheResponse:(NSCachedURLResponse *)proposedResponse
 completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler {
    
    NSCachedURLResponse *cachedResponse = proposedResponse;

    if (self.request.cachePolicy == NSURLRequestReloadIgnoringLocalCacheData) {
        // Prevents caching of responses
        cachedResponse = nil;
    }
    if (completionHandler) {
        completionHandler(cachedResponse);
    }
}

這里主要做下面幾種工作:

  • 構(gòu)造參數(shù)NSCachedURLResponse *cachedResponse
  • 調(diào)用回調(diào)completionHandler(cachedResponse);

這個(gè)代碼層面上就很簡單了驴党,下面我們就詳細(xì)的看一下這個(gè)簡單的工作。


NSCachedURLResponse對(duì)象的構(gòu)建

首先我們看一下這個(gè)類

/*!
    @class NSCachedURLResponse
    NSCachedURLResponse is a class whose objects functions as a wrapper for
    objects that are stored in the framework's caching system. 
    It is used to maintain characteristics and attributes of a cached 
    object. 
*/
@interface NSCachedURLResponse : NSObject <NSSecureCoding, NSCopying>
{
    @private
    NSCachedURLResponseInternal *_internal;
}

NSCachedURLResponse是一個(gè)類获茬,其對(duì)象充當(dāng)存儲(chǔ)在框架高速緩存系統(tǒng)中的對(duì)象的包裝器鼻弧。 它用于維護(hù)緩存對(duì)象的特征和屬性。

這個(gè)就是該類的作用锦茁。

這里進(jìn)行了判斷攘轩,如果請求的緩存策略cachePolicyNSURLRequestReloadIgnoringLocalCacheData,也就是忽略本地緩存數(shù)據(jù)码俩。那么就阻止對(duì)response的緩存度帮,cachedResponse對(duì)象設(shè)置為nil。


completionHandler回調(diào)

這個(gè)就很簡單了稿存,就是回調(diào)completionHandler笨篷,上面構(gòu)造的cachedResponse作為輸入?yún)?shù)輸入。

completionHandler(cachedResponse);

后記

本篇主要解析了關(guān)于緩存的代理方法瓣履,首先構(gòu)造了參數(shù)NSCachedURLResponse *cachedResponse率翅,并作為輸入?yún)?shù),回調(diào)block袖迎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冕臭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子燕锥,更是在濱河造成了極大的恐慌辜贵,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件归形,死亡現(xiàn)場離奇詭異托慨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)暇榴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門厚棵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕉世,“玉大人,你說我怎么就攤上這事婆硬√直耍” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵柿祈,是天一觀的道長哈误。 經(jīng)常有香客問我,道長躏嚎,這世上最難降的妖魔是什么蜜自? 我笑而不...
    開封第一講書人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮卢佣,結(jié)果婚禮上重荠,老公的妹妹穿的比我還像新娘。我一直安慰自己虚茶,他們只是感情好戈鲁,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嘹叫,像睡著了一般婆殿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罩扇,一...
    開封第一講書人閱讀 52,895評(píng)論 1 314
  • 那天婆芦,我揣著相機(jī)與錄音,去河邊找鬼喂饥。 笑死消约,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的员帮。 我是一名探鬼主播或粮,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捞高!你這毒婦竟也來了氯材?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤棠枉,失蹤者是張志新(化名)和其女友劉穎浓体,沒想到半個(gè)月后泡挺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辈讶,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年娄猫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贱除。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片生闲。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖月幌,靈堂內(nèi)的尸體忽然破棺而出碍讯,到底是詐尸還是另有隱情,我是刑警寧澤扯躺,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布捉兴,位于F島的核電站,受9級(jí)特大地震影響录语,放射性物質(zhì)發(fā)生泄漏倍啥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一澎埠、第九天 我趴在偏房一處隱蔽的房頂上張望虽缕。 院中可真熱鬧,春花似錦蒲稳、人聲如沸氮趋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剩胁。三九已至,卻和暖如春祥国,著一層夾襖步出監(jiān)牢的瞬間摧冀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來泰國打工系宫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留索昂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓扩借,卻偏偏與公主長得像椒惨,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子潮罪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

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