[IOS] SDWebImage 实现原理

作者: 许威彬 | 来源:发表于2016-08-24 12:16 被阅读132次

    一、SDWebImage 实现原理:

    首先让占位图先显示。

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

    如果有缓存,通过代理进行回调展示图片。

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

    如果找到了,就把硬盘中的数据加载到内存中并显示。

    如果没有找到,会生成一个下载器向远程服务器发出请求开始下载图片。

    图片下载由NSURLConnection 来做,实现相关delegate来判断图片下载中、下载完成和下载失败。

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

    进行界面展示。

    二、SDWebImageDownloader.m中的init方法

    _downloadQueue.maxConcurrentOperationCount = 6;

    三. SDWebImage支持gif么?

    支持。UIImage+GIF

    四、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";

    五、SDWebImage缓存文件名称

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

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

    相关文章

      网友评论

        本文标题:[IOS] SDWebImage 实现原理

        本文链接:https://www.haomeiwen.com/subject/lgtosttx.html