码迷,mamicode.com
首页 > Web开发 > 详细

8 SDWebImage 流程

时间:2018-03-30 21:52:40      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:run   header   set   回调   emc   memcach   query   mutable   返回   

流程图:
 
技术分享图片
 
1.UIimageView + WebCache 类 sd_setImageWithURL 方法,实现异步加载图片。 
在分类中,实现 sd_imageURL属性,保存url .
将placeHolder 付给image
2. SDWebImageManager(单利),调用 downloadImageWithURL方法
检验url 是NSString NSURL 并进行转换。
创建 SDWebImageCombinedOperation对象
验证self.failedURLs 是否包含这个url,url为空等一系列判断。
self.runningOperations添加URL
 
3. SDImageCache对象(属性)调用 queryDiskCacheForKey 方法,参数key(url转为string),回调block。
跟库key在memCache( NSCache)属性中查找,是否含有image 
如果h缓存中没有,起一个异步线程,去沙盒中查找,如果找到,解压并转为image。然后存进memCache属性中。
UIView + webCacheOperation 分类中, operationDictionary属性,存入 
 UIImageViewImageLoad = "<SDWebImageCombinedOperation: 0x600000029e40>"
 
4.沙盒执行完之后,回调block( SDWebImageManager中)。
制定优先级
调用 imageDownloader( SDWebImageDownloader)属性的 downloadImageWithURL方法,参数 url,options,progress,completedBlock,f返回值就是封装了request的 SDWebImageDownloaderOperation类 
 
调用addProgressCallback
起一个( dispatch_barrier_sync)同步阑珊,在自己启的线程中, self.URLCallbacks属性用来存储 completedBlock( SDWebImageDownloaderCompletedBlock)。
设置超时时间,如果没有设置,默认15s ,然后封装 NSMutableURLRequest请求网络,拼接参数(cookies,headerd,等),operation的优先级, shouldDecompressImages属性等。
downloadQueue( NSOperationQueue)属性添加 operation
 
调用 SDWebImageDownloaderOperation对象的 initWithRequest方法,这个类用于下载。
 
c初始化SDWebImageDownloaderOperation类以后,将operation 加入到 NSOperationQueue中,  [wself.downloadQueue addOperation:operation];
 
然后就会调用SDWebImageDownloaderOperation类中的start方法(重写的 NSOperation -start)
 
 
z知识点:1. dispatch_barrier_sync
  1. NSOperation
 
 
类的作用及其关系:
 
技术分享图片
 
 
 

8 SDWebImage 流程

标签:run   header   set   回调   emc   memcach   query   mutable   返回   

原文地址:https://www.cnblogs.com/JShuo/p/8678166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!