- (NSOperation *)queryDiskCacheForKey:(NSString *)key done:(SDWebImageQueryCompletedBlock)doneBlock
作用:缓存中查找
现在memCache中查找,再在disk中查找(如果找到,存入缓存中)。
- (void)storeImage:(UIImage *)image recalculateFromImage:(BOOL)recalculate imageData:(NSData *)imageData forKey:(NSString *)key toDisk:(BOOL)toDisk
作用:先将图片存储在memCache中。然后判断图片类型,是否是png,如果是jpg,压缩质量为1,然后压缩。
检查路径文件夹是否存在,然后创建文件。
- (NSString *)defaultCachePathForKey:(NSString *)key
作用: 1. 根据传入的key创建最终要存储时的文件名,进行了md5加密。
2.将存储的文件路径和文件名绑定在一起,作为最终的存储路径。
clear 缓存
- removeImageForKeyfromDisk:withCompletion: // 异步地将image从缓存(内存缓存以及可选的磁盘缓存)中移除
- clearMemory // 清楚内存缓存上的所有image [self.memCache removeAllObjects];
- clearDisk // 清除磁盘缓存上的所有image
- cleanDisk // 清除磁盘缓存上过期的image
- (void)removeImageForKey:(NSString *)key fromDisk:(BOOL)fromDisk withCompletion:(SDWebImageNoParamsBlock)completion
作用: 根据传入的key,删除缓存和磁盘。
- (void)clearDiskOnCompletion:(SDWebImageNoParamsBlock)completion
删除路径文件夹,并再创建一个文件夹。
- (void)cleanDiskWithCompletionBlock:(SDWebImageNoParamsBlock)completionBlock
作用:删除过期的缓存
1.根据self.diskCachePath生成NSURL和属性resourceKeys —>fileEnumerator
2.计算过期时间,(默认一周)
3。遍历文件夹 将过期的文件存入urlsToDelete 数组中。计算cache大小,并将file属性存入cacheFiles数组
4。删除urlsToDelete 数组中的文件
5,判断当前缓存大小是否大于maxCacheSize,直接将当前的cache大小降为maxCacheSize的一半
6. 删除的顺序为先删除旧的。
初始化 init
- (id)initWithNamespace:(NSString *)ns
1。创建isQueue队列
2.设置过期时间
3.初始化memCache
4.创建disk路径
5,添加通知:
内存警告 clearMemory
程序终止cleanDisk
后台backgroundCleanDisk