在开发中常用到的一个图片加载的第三方框架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;
});

作者:余默
链接:https://juejin.im/post/6881915308777422862