iOS小技能:自定义operation(SDWebImage是如何实现内存缓存的?)

本文探讨了SDWebImage如何实现内存缓存,基于LRU策略,先查找NSCache内存缓存,再访问磁盘缓存。接着详细介绍了自定义NSOperation来防止图片重复下载,并通过字典数组存储操作确保每个URL对应唯一操作。同时,文章还涉及了NSURLConnection的异步请求及NSMutableURLRequest的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

SDWebImage是如何实现内存缓存的?
这里写图片描述

LRU是Least Recently Used的缩写,即最近最少使用页面置换算,基于 HashMap 和 双向链表实现 。

  1. 先搜索内存缓存,内存缓存使用 NSCache实现。
  2. 再搜索磁盘缓存
  3. 如果磁盘缓存中存在,将缓存图片放入内存缓存,并返回它
  4. 如果磁盘缓存中不存在,根据图片的 url 获取图片的 data

I 自定义NSOperation实现图片下载

  • cell的图片下载,防止图片重复下载

使用字典数组存储下载图片的operation操作,保证一个URL对应一个操作。

/**
使用字段数组存储下载图片的operation操作,保证一个URL对应一个操作
*/
@property (nonatomic
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java、iOS、Vue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值