zoukankan      html  css  js  c++  java
  • SDWebImage源码分析(一)

      拆分类功能:

          UIImageView+WebCache->集成了图片下载  

          SDWebImageManager->下载管理器

          SDWebImageDownloader->下载器(专门负责下载功能)

          SDImageCache->负责缓存(内存缓存、磁盘缓存)

          SDWebImageManagerDelegate->图片下载完成了

          SDWebImageDownloaderDelegate->图片下载完成了

     

      下载流程:

        viewController -> UIImageView(setImageWithURL)

                -> SDWebImageMangager(downloadWithURL)

                -> SDWebImageDownloader(downloadForURL)

                -> SDImageCache(缓存)

        

        采用的设计模式:

        1: 单例模式

            SDWebImageMangager

            SDImageCache

        2: 外观模式

            Manager 管理实际管理了缓存器, 下载器

            两个核心角色

              角色一: 系统对外统一接口   SDWebImageMangager

              角色二: 子系统接口            SDWebImageDownloader, SDImageCache

        3:装饰模式

             UIImageView (WebCache)OC类扩展

        4:代理模式

          SDWebImageManagerDelegate

          SDWebImageDownloaderDelegate

     

    模式角色分析:

      UIImageView (WebCache)->功能

        方法重载:下载图片

        占位图片

        核心功能:调用了SDWebImageManager

      SDWebImageManager

        管理器:下载图片

        调用缓存器

      SDWebImageDownloader

        具体下载:downloaderWithURL

      SDImageCache

        注意:保存图片(key:value)

        key->名称(url)

        value->图片

       磁盘缓存图片名称生成算法->md5算法

        注意:缓存读取顺序(最新版本的SDWebImage围绕这个基础思路搭建的)

          第一步:内存读取

          第二步:磁盘读取

          第三步:缓存内存

          第四步:网络请求

     

     

  • 相关阅读:
    解决PHP处理图片时内存占用过高问题
    destoon下动态链接301到伪静态(ngnix)
    微信小程序转百度小程序代码
    解决:本图片来自微信公众号,未经许可,不能引用 问题
    MP4文件批量转码成MP3
    dt框架自定义url规则
    织梦后台基本参数无法保存解决办法
    关于tomcat启动没有进行编译或者编译报错的问题
    zf-安徽桐城关于(资源中心-数据录入)上传文件后没有进行处理Excel文件的原因
    zf-关于平台的用户名密码的设置
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/13024284.html
Copyright © 2011-2022 走看看