一般我们项目中的缓存一般分为2大块:一个是自己缓存的一些数据;还有一个就是我们使用的SDWebImage这个第三方库给我们自动缓存的图片文件缓存了.
实际项目中会配合设置里去清理缓存, 效果截图如下:
一、实现功能
1、仅仅清理图片缓存
2、清理所有缓存文件
二、程序实现
1、仅仅清理图片缓存
如果你只想清理图片缓存,且是用SDWebImage加载的网络图片,那么你可以用SDWebImage内部封装方法清除图片缓存.
导入头文件:
1
|
#import <SDImageCache.h>
|
获取缓存图片大小并异步清除图片缓存:
1
2
3
4
5
6
7
8
|
//获取缓存图片的大小(字节)
NSUInteger bytesCache = [[SDImageCache sharedImageCache] getSize];
//换算成 MB (注意iOS中的字节之间的换算是1000不是1024)
float
MBCache = bytesCache/1000/1000;
//异步清除图片缓存 (磁盘中的)
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[[SDImageCache sharedImageCache] clearDisk];
});
|
2、清理所有缓存文件
如果你想清理所有的缓存文件(包括图片、视频、音频等), 那你可以用如下方法。需要你把caches的路径传过去,然后计算caches文件夹下内容的大小,然后根据其大小再判断是否清除缓存。(根据路径删除文件或文件夹)
为了让代码看起来更整洁,这里将缓存的计算及清理封装自定义一个工具类CleanCaches.
利用SDWebImage计算并清理缓存:
-
计算单个文件大小: