在开发中常用到的一个图片加载的第三方框架sdwebimage,app也有入口需要清除缓存(这里只计算sdwebimage的图片缓存)
1.首先导入头文件
#import <SDImageCache.h>
2.使用方法及计算方法
使用方法:
NSUInteger size = [[SDImageCache sharedImageCache] totalDiskSize];
NSString *cacheStr = [self fileSizeWithInterge:size];
self.cacheL.text = cacheStr;
计算方法:
- (NSString *)fileSizeWithInterge:(NSInteger)size {
// 1k = 1024, 1m = 1024k
if (size < 1024) { //小于1k
return [NSString stringWithFormat:@"%ldB",(long)size];
} else if (size < 1024 * 1024) { //小于1M
CGFloat cFloat = size / 1024;
return [NSString stringWithFormat:@"%.1fK",cFloat];
} else if (size < 1024 * 1024 * 1024) { //小于1G
CGFloat cFloat = size / (1024 * 1024);
return [NSString stringWithFormat:@"%.1fM",cFloat];
} else { //大于1G
CGFloat cFloat = size / (1024 * 1024 * 1024);
return [NSString stringWithFormat:@"%.1fG",cFloat];
}
}
3.清除缓存的方法,一般清除了缓存可以直接清零,也可以直接在查询计算一遍
[MBProgressHUD showActivityMessageInWindow:@"正在清理缓存"];
[[SDImageCache sharedImageCache] clearMemory];
[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{
[MBProgressHUD hideHUD];
}];
注意事项:如果进入页面,就开始查询图片缓存,在缓存比较大的情况下,可能会查询缓慢,操作可以放到异步线程中执行
dispatch_async(dispatch_get_main_queue(), ^{
//计算SDWebImage缓存大小
NSUInteger size = [[SDImageCache sharedImageCache] totalDiskSize];
NSString *cacheStr = [ws fileSizeWithInterge:size];
ws.cacheL.text = cacheStr;
});