- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【无限互联】iOS框架研究之SDWebImage的原理以及使用流程秦峰,iossdwebimage使用,iossdwebimage下载,iossdwebimage详解,iossdwebimage报错,iossdwebimage缓存,iossdwebimage原理,iossdwebimage相册,ioswebimage,sdwebimage
【无限互联】IOS框架研究之SDWebImage的原理以及使用流程
SDWebImage
这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。
SDWebImage 支持异步的图片下载+缓存,提供了 UIImageView+WebCacha 的 category,方便使用。SDWebImage加载图片的流程:
入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage显示,然后 SDWebImageManager 根据 URL 开始处理图片。
进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给 SDImageCache 从缓存查找图片是否已经下载 queryDiskCacheForKey:delegate:userInfo:.
先从内存图片缓存查找是否有图片,如果内存中已经有图片缓存,SDImageCacheDelegate回调 imageCache:didFindImage:forKey:userInfo: 到 SDWebImageManager。
SDWebImageManagerDelegate 回调 webImageManager:didFinishWithImage: 到 UIImageView+WebCache等前端展示图片。
如果内存缓存中没有,生成 NSInvocationOperation添加到队列开始从硬盘查找图片是否已经缓存。
根据 URLKey在硬盘缓存目录下尝试读取图片文件。这一步是在 NSOperation 进行的操作,所以回主线程进行结果回调 notifyDelegate:。
如果上一操作从硬盘读取到了图片,将图片添加到内存缓存中(如果空闲内存过小,会先清空内存缓存)。SDImageCacheDelegate回调 imageCache:didFindImage:forKey:userInfo:。进而回调展示图片。
如果从硬盘缓存目录读取不到图片,说明所有缓存都不存在该图片,需要下载图片,回调 imageCache:didNotFindImageForKey:userInfo:。
共享或重新生成一个下载器 SDWebImageDownloader 开始下载图片。
图片下载由 NSURLConnection来做,实现相关 delegate 来判断图片下载中、下载完成和下载失败。
connection:didReceiveData: 中利用 ImageIO做了按图片下载进度加载效果。
connectionDidFinishLoading: 数据下载完成后交给 SDWebImageDecoder 做图片解码处理。
图片解码处理在一个 NSOperationQueue完成,不会拖慢主线程 UI。如果有需要对下载的图片进行二次处理,最好也在这里完成,效率会好很多。
在主线程 notifyDelegateOnMainThreadWithInfo: 宣告解码完成,imageDecoder:didFinishDecodingImage:userInfo: 回调给 SDWebImageDownloader。
imageDownloader:didFinishWithImage: 回调给 SDWebImageManager告知图片下载完成。
通知所有的 downloadDelegates下载完成,回调给需要的地方展示图片。
将图片保存到 SDImageCache中,内存缓存和硬盘缓存同时保存。写文件到硬盘也在以单独 NSInvocationOperation 完成,避免拖慢主线程。
SDImageCache 在初始化的时候会注册一些消息通知,在内存警告或退到后台的时候清理内存图片缓存,应用结束的时候清理过期图片。
SDWI 也提供了 UIButton+WebCache 和 MKAnnotationView+WebCache,方便使用。
SDWebImagePrefetcher 可以预先下载图片,方便后续使用。
这个库最常用到的,是UIImageView的一个Category:UIImageView (WebCache)。
这里面最常用的一个方法,就是根据URL,加载网络的图片。它的实现如下:
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage*)placeholder
{
SDWebImageManager *manager = [SDWebImageManagersharedManager];
// Remove
您可能关注的文档
- _被_字的语义数量特征和被动句_汉语被动句的认知语义基础研究.pdf
- _辐射多层组合屏蔽的蒙特卡罗方法模拟及其论证.pdf
- _都市圈_还是都_圈_市_透过效果不理想的苏锡常都市圈规划解读_圈_都市现象.pdf
- _田京伟_20_S_人参皂苷Rg3的舒张血管作用及其机.pdf
- §118原子的构成.ppt
- ~(61,62,64)Ni全套中子核反应数据的理论计算.pdf
- ~3He球形正比计数器热中子探测效率研究.pdf
- §106多普勒效应一经典多普勒效应当我们站在铁路旁,正遇鸣.ppt
- §77.2简单几何体的面积和体积习题课(北师大版).ppt
- §6.金属中的电子与无规位相近似.doc
- 【精细校对】2005辽宁高考英语试题【完美排版】.pdf
- 【物理】机械能电场直流电路重点分析及复习技巧.doc
- 【湖滨带类型划分研究】.pdf
- 【英语】2011高考(外研版)一轮复习必修5Module5创新课件.ppt
- 【英语】高考英语书面表达热点话题必备词汇.doc
- 【金版教程】2015届高考物理大一轮总复习83带电粒子在复合场中的运动限时规范特训(含解析).doc
- 【高中·物理】重力弹力摩擦力.ppt
- 【高考总复习必备】2013年高考数学闯关密练特训33导数的实际应用新人教A版(含解析).doc
- 【高中英语(选修)9.10.11词汇表(新课标人教版).doc
- 一个低本底中子探测器的效率计算.pdf
文档评论(0)