SDWebImage 实现原理及大体介绍

1、SDWebImage 实现原理:web

  1. 首先让占位图先显示。缓存

  2. SDWebImageManage交给 SDImageCache 先从内存中查找是否有图片,会以URL做为数据的索引在内存中查找是否有对应的缓存。服务器

  3. 若是有缓存,经过代理进行回调展现图片。spa

  4. 若是内存缓存中没有找到,生成 NSInvocationOperation 添加到队列,会经过MD5处理过的key来硬盘中查询是否有图片。代理

  5. 若是找到了,就把硬盘中的数据加载到内存中并显示。orm

  6. 若是没有找到,会生成一个下载器向远程服务器发出请求开始下载图片。索引

  7. 图片下载由NSURLConnection 来作,实现相关delegate来判断图片下载中、下载完成和下载失败。队列

  8. 下载后的图片会被保存到内存和硬盘。图片

  9. 进行界面展现。内存

    2、

    SDWebImageDownloader.m中的init方法

    _downloadQueue.maxConcurrentOperationCount = 6;

    三. SDWebImage支持gif么?

    支持。UIImage+GIF

    4、SDWebImage中怎么判断文件的类型的

        在NSData+ImageContentType.m中

根据文件头的第一个字节判断的 ——>将图片放到Bundle中—> Open As—> HEX

 case 0xFF:

            return @"image/jpeg";

        case 0x89:

            return @"image/png";

        case 0x47:

            return @"image/gif";

        case 0x49:

        case 0x4D:

            return @"image/tiff";

5、

SDWebImage缓存文件名称

为了防止缓存的图片名称冲突,根据md5计算的

6、SD默认超时时间是15s

相关文章
相关标签/搜索