SDWebImage怎么实现图片的缓存机制的?

以tableViewController为例:

  1. 因为每次cell需要显示都需要重新调用-(UITableViewCell)tableView:(UITableView)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ }方法
  2. 所以每次调用tableView显示行的数据源的方法时,如果需要从网络加载图片,就需要将加载图片的耗时操作放在子线程上执行,从网络上下载的图片可以以键值对的形式保存;在定义可变字典中,将每张图片的唯一的路径作为键,将从网络上下载下来的图片作为值保存在内存缓存中,这样每次滑动tableView cell重用时就直接判断内存缓存中有没有需要的图片;如果有就不需要下载,在没有出现内存警告或者程序员手动清理内存缓存时,就直接从内存缓存中获取图片。
  3. 为了每次退出程序,再次进入程序时,不浪费用户的流量,需要将第一次进入程序时加载的图片保存到本地沙盒缓存文件中,在沙盒中保存的图片数据没有被改动之前,下次开启程序就直接从沙盒的缓存文件中读取需要的显示的图片,并将沙盒缓存文件夹(Cache)中保存的图片保存到内存缓存中,这样用户每次滑动tableView cell重用时直接从内存缓存中读取而不是从沙盒中读取,节约时间。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 25,389评论 30 469
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 8,007评论 4 43
  • tableView加载网络图片 需求的效果图 数据结构 获取模型数组 准备模型 .h文件 .m文件 KVC字典转模...
    月下独酌灬阅读 1,945评论 4 18
  • 在我们还很小,很小的时候, 爸妈是我们依赖的港湾, 不离,不舍,不愿远行! 在我们长大后,离家的时候, 爸妈是我们...
    秀秀王子阅读 235评论 0 1
  • 1. 现在很多女人都说,宁愿在自行车上笑, 也不愿意在宝马车上哭!呵呵,我才不会 让我的女人哭,毕竟我只有自行车!...
    野生吐槽君阅读 107评论 0 1
  • ● 傳統民俗【送神日】 图文 / 古典新风尚 ●傳統民俗【送神日】●農曆十二月二十四日是灶神與其他諸神鑒...
    文時衍書阅读 1,032评论 0 1
  • 午后,和煦地阳光倾斜满身,温暖而又暖心,忍不住伸手去触摸,透过指缝的丝丝金线,仿佛看到了什么,凝神。幸福需要经久努...
    十三分贝阅读 73评论 0 0
  • 文/愚叟艾思 白水悠悠藏故事,祁山莽莽毓贤人。 河游锦鲤游仙恋,浪隐蛟龙隐客寻。 渔夫垂钓汀兰醉,童子骑牛柳笛闻。...
    艾思阅读 119评论 12 20