SDWebImage使用及原始碼分析

weixin_34253539發表於2017-11-07

SDWebImage

1.SDWebImage框架的分析

SDWebImageManager管理者

//單例類方法,該方法提供一個全域性的SDWebImageManager例項

+ (SDWebImageManager *)sharedManager;

//核心方法

- (id)downloadImageWithURL:(NSURL *)url

options:(SDWebImageOptions)options

progress:(SDWebImageDownloaderProgressBlock)progressBlock

completed:(SDWebImageCompletionWithFinishedBlock)completedBlock;


使用:

- (void)sd_setImageWithURL:(NSURL *)url;

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock;

[_bookImg sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.baidu.com"]] placeholderImage:[UIImage imageNamed:@"123.PNG"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {

NSLog(@"%f",1.0 * receivedSize/expectedSize);//列印下載進度

} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

NSLog(@"回撥返回快取型別,0沒有快取?1記憶體快取?2磁碟快取?%zd",cacheType);//列印快取型別

}];

//options列舉引數選項詳細, 傳0為預設

   typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) {

//預設情況下,url在下載失敗後,加入黑名單,不會再次下載,使用該引數,url在下載失敗後,不會加入黑名單,再次下載

SDWebImageRetryFailed = 1 << 0, //失敗後重新下載

//預設情況下,UI互動時也會啟動圖片下載,使用該引數,會推遲到滾動檢視停止滾動後再繼續下載,NSURLConnection的網路下載事件監聽的執行迴圈模式是:NSDefaultRunloopMode

SDWebImageLowPriority = 1 << 1, //低優先順序下載

//禁止磁碟快取,只使用記憶體快取

SDWebImageCacheMemoryOnly = 1 << 2, //只使用記憶體快取

//圖片從上到下依次顯示,漸進式下載

SDWebImageProgressiveDownload = 1 << 3, //進度顯示

//重新下載圖片,不從記憶體,沙盒快取裡面去取,替換已有的快取,快取影像被重新整理會呼叫一次completedBlock, 並傳遞最終影像

SDWebImageRefreshCached = 1 << 4, //重新整理快取

//系統進入後臺,圖片繼續下載,如果後臺任務過期,下載任務取消

SDWebImageContinueInBackground = 1 << 5, //後臺下載

//處理儲存在NSHTTPCookieStore中的cookies

SDWebImageHandleCookies = 1 << 6, //處理cookies

//允許不信任的SSL證書,主要用於測試使用

SDWebImageAllowInvalidSSLCertificates = 1 << 7, //允許不信任的SSL證書

//優先於預設佇列中順序下載

SDWebImageHighPriority = 1 << 8, //優先下載

//延遲載入佔點陣圖片

SDWebImageDelayPlaceholder = 1 << 9, //延遲載入佔點陣圖片

//

SDWebImageTransformAnimatedImage = 1 << 10,

};

2.SDWebImage快取的概念

3.根據SDWebImage的快取概念, 做快取處理

4.下載超時和圖片的格式區分

5.SDWebImage的清理機制和記憶體的監聽

相關文章