当前位置: 首页 > news >正文

【多线程-第四天-自己模拟SDWebImage的下载图片功能-缓存管理 Objective-C语言】

一、我们再来做下载操作管理类的第二个任务——缓存管理

通知

1.下载操作管理类,第二个任务,它要去管理缓存,管理缓存的时候,既要管理内存缓存,又要管理磁盘缓存,之前,下载操作管理类,已经完成了下载这件事情,下边,我们回来,

先不考虑磁盘缓存呢,先考虑内存缓存,之前我们做过内存缓存,内存缓存的话,我们要做一件什么事儿,创建一个缓存池,

// 图片缓存池

@property(nonatomic,strong)NSMutableDictionary *imageCache;

通知

OK,下边,去懒加载,去初始化,

- (NSMutableDictionary *)imageCache{

if(_imageCache == nil){

_imageCache = [NSMutableDictionary dictionaryWithCapacity:10];

}

return _imageCache;

}

通知

图片的缓存池,就有了,下边我们要,当图片下载完成之后,我们应该把图片缓存起来,往下走,

通知

这是不是下载图片,当finishedBlock的时候,图片是不是下载完了,图片下载完了之后,下边我们就要去,

// 缓存图片

self.imageCache[urlString] = img;

通知

哎,把图片缓存起来了,那下边,在下载之前,下一次在下载之前,我们应该先去判断,判断图片是否有缓存,如果有缓存的话,那应该去直接从缓存中读取图片,显示图片,如果没有缓存的话,那才去下载图片,

// 判断图片是否有缓存

if(self.imageCache[urlString]){

}

通知

注意,在这个位置,我们两件事情都要解决,判断内存缓存,判断磁盘缓存,是不是也得写几行代码呢,我们之前有这样的经验,现在呢,这个方法,它的核心目的,可不是管理缓存,它的目的是什么,是不是专业下载图片,

通知

它的目的就是专业下载图片,我就下载图片,别的事

相关文章:

  • 2025最新系统 Git 教程(五)
  • 【Python算法】基础语法、算法技巧模板、二分、DFS与BFS
  • selenium快速入门
  • 如何实现H5端对接钉钉登录并优雅扩展其他平台
  • 《计算机视觉度量:从特征描述到深度学习》—深度学习工业检测方案评估
  • 人工智能在医疗信息化设备上为医疗行业带来了诸多变革
  • vscode 连不上 Ubuntu 18 server 的解决方案
  • MySQL:日志
  • TDEngine 配置
  • Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)
  • 根据 PID 找到对应的 Docker 容器
  • 【专题】图论
  • Docker 容器内运行程序的性能开销
  • 使用SQL查询ES数据
  • 考研单词笔记 2025.04.10
  • Ansible:Playbook-template模板详解
  • STM32F103C8T6单片机开发:简单说说单片机的外部GPIO中断(标准库)
  • 基于landsat与Modis影像的遥感技术的生态环境质量评价
  • 纯键盘操作电脑,丢弃鼠标!!!
  • 小程序租赁系统源码功能分享
  • 电商数据平台/百度关键词优化平台
  • 公司网站开发怎么入账/网络推广代理
  • 湖北网站建设怎样/中国50强企业管理培训机构
  • 柳州专业做网站/网络营销薪酬公司
  • 郑州公司建站模板/视频推广渠道有哪些
  • wordpress获取当前页面链接/网站排名优化方案