版本記錄
版本號(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)行了判斷攘轩,如果請求的緩存策略cachePolicy
是NSURLRequestReloadIgnoringLocalCacheData
,也就是忽略本地緩存數(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袖迎。