第03天多线程网络:(09):SDWebImage框架内部实现逻辑
2017-04-24 00:00
211 查看
#####一、SDWebImage框架内部实现逻辑
1.最常用的类
2.使用了
3.使用了
4.使用了
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;
相关文章推荐
- 第03天多线程网络:(08):SDWebImage框架内部细节
- 第03天多线程网络:(07):SDWebImage框架的基本使用
- 多线程 - 11.图片缓存技术(SDWebImage框架内部实现)
- AJ学IOS(55)多线程网络之图片下载框架之SDWebImage
- iOS UITableViewCell 多线程 网络+沙盒的图片加载以及第三方框架SDWebImage方式加载
- 第03天多线程网络:(05):SDWebImage简单说明和使用
- 网络多线程-下载图片(不用SDWebImage框架)
- 多线程:实现下载图片(使用 SDwebImage框架)
- 猫猫学iOS(五十五)多线程网络之图片下载框架之SDWebImage
- SDWebImage 第三方框架的使用——网络图片的处理操作
- SDWebImage内部实现过程
- 网络多线程-SDWebImage的基本使用
- 网络多线程下载图片(SDWebImage)
- SDWebImage内部实现过程
- iOS网络开发(6)网络图片加载开源框架SDWebImage
- SDWebImage的内部实现原理
- NSCache 原理 (著名开源框架SDWebImage 就是使用的NSCache实现的缓存)
- SDWebImage内部实现过程
- SDWebImage内部实现原理剖析
- 仿照SDWebImage 内部核心实现