c语言模拟系统交卷评分闪退,c语言文件1.怎样追踪app崩溃率。怎样解决线上闪退 当iO(12)...

7.假设上一操作从硬盘读取到了图片,将图片加入到内存缓存中(假设空暇内存过小,会先清空内存缓存)。SDImageCacheDelegate 回调 imageCache:didFindImage:forKey:userInfo:。进而回调展示图片。

8.假设从硬盘缓存文件夹读取不到图片,说明全部缓存都不存在该图片,须要下载图片,回调 imageCache:didNotFindImageForKey:userInfo:。

9.共享或又一次生成一个下载器 SDWebImageDownloader 开始下载图片。

10.图片下载由 NSURLConnection 来做,实现相关 delegate 来推断图片下载中、下载完毕和下载失败。

11.connection:didReceiveData: 中利用 ImageIO 做了按图片下载进度载入效果。

12.connectionDidFinishLoading: 数据下载完毕后交给 SDWebImageDecoder 做图片解码处理。

13.图片解码处理在一个 NSOperationQueue 完毕。不会拖慢主线程 UI。假设有须要对下载的图片进行二次处理。最好也在这里完毕,效率会好非常多。

14.在主线程 notifyDelegateOnMainThreadWithInfo: 宣告解码完毕。imageDecoder:didFinishDecodingImage:userInfo: 回调给 SDWebImageDownloader。

15.imageDownloader:didFinishWithImage: 回调给 SDWebImageManager 告知图片下载完毕。

16.通知全部的 downloadDelegates 下载完毕,回调给须要的地方展示图片。

17.将图片保存到 SDImageCache 中,内存缓存和硬盘缓存同一时候保存。写文件到硬盘也在以单独 NSInvocationOperation 完毕,避免拖慢主线程。

18.SDImageCache 在初始化的时候会注册一些消息通知,在内存警告或退到后台的时候清理内存图片缓存。应用结束的时候清理过期图片。

19.SDWI 也提供了 UIButton+WebCache 和 MKAnnotationView+WebCache,方便使用。

20.SDWebImagePrefetcher 能够预先下载图片,方便兴许使用。

SDWebImage库的作用

通过对UIImageView的类别扩展来实现异步载入替换图片的工作。

主要用到的对象:

1、UIImageView (WebCache)类别。入口封装。实现读取图片完毕后的回调

2、SDWebImageManager,对图片进行管理的中转站,记录那些图片正在读取。

向下层读取Cache(调用SDImageCache),或者向网络读取对象(调用SDWebImageDownloader) 。

实现SDImageCache和SDWebImageDownloader的回调。

3、SDImageCache。依据URL的MD5摘要对图片进行存储和读取(实现存在内存中或者存在硬盘上两种实现)

实现图片和内存清理工作。

4、SDWebImageDownloader,依据URL向网络读取数据(实现部分读取和全部读取后再通知回调两种方式)

其它类:

SDWebImageDecoder。异步对图像进行了一次解压??

1、SDImageCache是怎么做数据管理的?

SDImageCache分两个部分。一个是内存层面的,一个是硬盘层面的。内存层面的相当是个缓存器,以Key-Value的形式存储图片。当内存不够的时候会清除全部缓存图片。用搜索文件系统的方式做管理,文件替换方式是以时间为单位,剔除时间大于一周的图片文件。当SDWebImageManager向SDImageCache要资源时,先搜索内存层面的数据,假设有直接返回,没有的话去访问磁盘。将图片从磁盘读取出来。然后做Decoder,将图片对象放到内存层面做备份,再返回调用层。

2、为啥必须做Decoder?

由于UIImage的imageWithData函数是每次绘图的时候才将Data解压成ARGB的图像,所以在每次绘图的时候,会有一个解压操作,这样效率非常低,可是仅仅有瞬时的内存需求。为了提高效率通过SDWebImageDecoder将包装在Data下的资源解压。然后画在另外一张图片上。这样这张新图片就不再须要反复解压了。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-76693-12.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值