123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- ## SDWebImage学习-SDImageCache
- ###整体介绍缓存组成
- 1、SDImageCacheDefine类
- 主要是一些基础定义
- 缓存类型枚举 SDImageCacheType
- 一系列缓存操作Block ,SDImageCacheCheckCompletionBlock等
- 缓存查询过程中的解码方法SDImageCacheDecodeImageData
- 定义了核心协议-SDImageCache,自定义缓存时只要实现该协议的方法,可以通过SDImageCachesManager来注册管理多个缓存
- 2、SDImageCacheConfig文件
- 配置信息和选项
- SDImageCacheConfigExpireType,用来计算图片的过期时间的选项
- 其他属性
- @property (assign, nonatomic) NSDataReadingOptions diskCacheReadingOptions;
- NSDataReadingUncached : 不要缓存,如果该文件只会读取一次,这个设置可以提高性能;
- NSDataReadingMappedIfSafe : 在保证安全的前提下使用mmap;
- NSDataReadingMappedAlways : 使用mmap;
- 可以传入NSDataReadingMappedIfSafe,这样系统就不会把整个文件读进内存,而是用进程的内存虚拟地址空间去映射实际的文件中,mmap不会为文件分配物理内存,而是相当于将内存地址指向文件的磁盘地址。一定场景下可以用来解决内存暴涨问题,例如加载一个视频文件,如果一下子加载完整的视频文件,内存肯定暴涨,采用mmap来优化,建立文件映射,就可以有效减少内存占用。
- @property (assign, nonatomic) NSDataWritingOptions diskCacheWritingOptions;
- 将缓存写入磁盘时的写入选项,默认为`NSDataWritingAtomic`,但是可以设置为“NSDataWritingWithoutOverwriting”以防止覆盖现有文件
- 2、SDImageCache类
- 缓存的核心类,只要管理内存缓存和磁盘缓存
- SDImageCacheOptions 一些缓存的选项
- SDImageCacheConfig config配置对象
- memoryCache 内存缓存
- diskCache 磁盘缓存
- - (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns
- diskCacheDirectory:(nullable NSString *)directory;
- 可以指定命名空间和沙盒目录中
- _diskCachePath = [directory stringByAppendingPathComponent:ns];
- 命名空间也就是保存图像的文件夹名字
- 一系列存储、查询、删除和清理缓存等方法
- 缓存相关信息
- @property (nonatomic, strong, nullable) dispatch_queue_t ioQueue;
- 读写串行队列
- 监听
- UIApplicationWillTerminateNotification
- UIApplicationDidEnterBackgroundNotification
- SDImageCacheConfig
|