您的位置:首页 > 理论基础 > 计算机网络

第03天多线程网络:(09):SDWebImage框架内部实现逻辑

2017-04-24 00:00 211 查看
#####一、SDWebImage框架内部实现逻辑
1.最常用的类
UIImageView+WebCache.h


/**
* Set the imageView `image` with an `url`, placeholder and custom options.
*
* The download is asynchronous and cached.
*
* @param url         The url for the image.
* @param placeholder The image to be set initially, until the image request finishes.
* @param options     The options to use when downloading the image. @see SDWebImageOptions for the possible values.
*
* 根据图片的url下载图片并设置到ImageView上面去,并设置占位图片,自定义下载选项
* @param url           图片的URL
* @param placeholder   显示在UIImageView上面的占位图片,直到图片下载完成
* @param options       下载图片的选项。参考SDWebImageOptions的枚举值
*/
- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options;




2.使用了
SDWebImageManager
类的下载方法

//加载图片的核心方法
/*
* 如果URL对应的图像在缓存中不存在,那么就下载指定的图片 ,否则返回缓存的图像
*
* @param url 图片的URL地址
* @param options 指定此次请求策略的选项
* @param progressBlock 图片下载进度的回调
* @param completedBlock 操作完成后的回调
*      此参数是必须的,此block没有返回值
*      Image:请求的 UIImage,如果出现错误,image参数是nil
*      error:如果出现错误,则error有值
*      cacheType:`SDImageCacheType` 枚举,标示该图像的加载方式
*          SDImageCacheTypeNone:从网络下载
*          SDImageCacheTypeDisk:从本地缓存加载
*          SDImageCacheTypeMemory:从内存缓存加载
*          finished:如果图像下载完成则为YES,如果使用 SDWebImageProgressiveDownload 选项,同时只获取到部分图片时,返回 NO
*          imageURL:图片的URL地址
*
* @return SDWebImageOperation对象,应该是SDWebimageDownloaderOperation实例
*/
- (id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url
options:(SDWebImageOptions)options
progress:(SDWebImageDownloaderProgressBlock)progressBlock
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock






3.使用了
SDWebImageDownloader
类的方法

/*
* 使用给定的 URL 创建 SDWebImageDownloader 异步下载器实例
* 图像下载完成或者出现错误时会通知代理
* url:要下载的图像 URL
* SDWebImageDownloaderOptions:下载选项|策略
* progressBlock:图像下载过程中被重复调用的 block,用来报告下载进度
* completedBlock:图像下载完成后被调用一次的 block
*      image:如果下载成功,image 参数会被设置
*      error:如果出现错误,error 参数会被设置
*      finished:
如果没有使用 SDWebImageDownloaderProgressiveDownload,最后一个参数一直是 YES
*          如果使用了 SDWebImageDownloaderProgressiveDownload 选项,此 block 会被重复调用
*              1)下载完成前,image 参数是部分图像,finished 参数是 NO
*              2)最后一次被调用时,image 参数是完整图像,而 finished 参数是 YES
*              3)如果出现错误,那么finished 参数也是 YES
*  返回值:可被取消的 SDWebImageOperation
*/
- (id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url
options:(SDWebImageDownloaderOptions)options
progress:(SDWebImageDownloaderProgressBlock)progressBlock
completed:(SDWebImageDownloaderCompletedBlock)completedBlock;






4.使用了
SDWebImageDownloaderOperation
类的下载操作
所有的方法都在操作里面他重写了start方法里面了


/**
*  Initializes a `SDWebImageDownloaderOperation` object
*
*  @see SDWebImageDownloaderOperation
*
*  @param request        the URL request
*  @param options        downloader options
*  @param progressBlock  the block executed when a new chunk of data arrives.
*                        @note the progress block is executed on a background queue
*  @param completedBlock the block executed when the download is done.
*                        @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue
*  @param cancelBlock    the block executed if the download (operation) is cancelled
*
*  @return the initialized instance
*/
/*
* 初始化一个 `SDWebImageDownloaderOperation` 对象
* request:请求对象
* options:下载选项
* progressBlock:新的数据块到达时执行的 block(下载进度),即进度回调
* completedBlock:
1)下载结束后执行的 block
2)注意:如果下载成功,completion block 在主队列执行。如果出现错误,block 可能会在后台队列执行
* cancelBlock:如果下载(操作)被取消,执行的 block
*/
- (id)initWithRequest:(NSURLRequest *)request
options:(SDWebImageDownloaderOptions)options
progress:(SDWebImageDownloaderProgressBlock)progressBlock
completed:(SDWebImageDownloaderCompletedBlock)completedBlock
cancelled:(SDWebImageNoParamsBlock)cancelBlock;






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Objective-C 多线程