【多线程-第四天-SDWebImage的常见面试题-SDWebImage的缓存处理 Objective-C语言】
2025/4/19 19:37:03
来源:https://blog.csdn.net/madoca/article/details/147293815
浏览:
次
关键词:【多线程-第四天-SDWebImage的常见面试题-SDWebImage的缓存处理 Objective-C语言】
一、SDWebImage的缓存处理

1.SDWebImage的常见面试题,我们知道SDWebImage既可以做内存缓存,又可以做磁盘缓存,当做内存缓存的时候,用的是NSCache,
SDWebImage在做磁盘缓存的时候,处理的比我们复杂,复杂在哪儿呢,复杂在它会设置磁盘缓存的缓存时间,缓存时间默认是一周的时间,是一个星期的时间,它会自动的把一个星期以前的图片给删除掉,
好,这件事情怎么实现的,我们可以通过源代码来看一下,源代码的话,看谁,打开,源代码的话,那么多类,不知道看哪个类,那我们先扫一眼,把这个SDWebImage这个项目打开,

项目打开之后,这里边是分成了四个文件夹,
1)SDWebImage
2)WebImage
3)Frameworks
4)Products
我们打开SDWebImage这个文件夹,

打开之后,又分成了四个文件夹,
1)Downloader
2)Cache
3)Utils
4)Categories
我们要看跟缓存相关的技术点的,我们看哪个文件夹,对,Cache,打开这个文件夹,里边的东西很简单,就一个类,SDImageCache,
把它的SDImageCache.h文件点开,看一下,

打开之后,这里边写了一些枚举啊,这些枚举我们曾经见过,
1)SDImageCacheTypeNone,
2)SDImageCacheTypeDisk,
3)SDImageCacheTypeMemory,

就是设置当前下载这些图片,是否缓存了,缓存到哪儿了,磁盘上还是内存里边来,再往下看,

这是这个类,这个类继承自NSObject,再往下看,

定义了好多好多属性啊,
1)shouldDecompressImages:是否要压缩图片,
2)shouldDisableiCloud:是否要禁用iCloud,
3)shouldCacheImagesInMemory:是否要缓存在内存中,
4)maxMemoryCost:最大的成本,看上边的注释,The maximum “total cost” of the in-memory image cache.The cost function is the number of pixels held in memory.
total cost:就是最大的内存缓存的成本,就是缓存成本,就是设置NSCache,使用的这个缓存成本,

5)maxMemoryCountLimit:最大缓存的个数,