iOS中的缓存计算和清除完整实例代码

发布时间 - 2026-01-11 00:48:54    点击率:

1.首先,一般我们项目中的缓存一般分为2大块,一个是自己缓存的一些数据;还有一个就是我们使用的SDWebImage这个第三方库给我们自动缓存的图片文件缓存了

<1>怎么计算缓存大小(主要是利用系统提供的NSFileManager类来实现)

$1.单个文件大小的计算

-(long long)fileSizeAtPath:(NSString *)path{
  NSFileManager *fileManager=[NSFileManager defaultManager];
  if([fileManager fileExistsAtPath:path]){
    long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
    return size;
  }
  return 0;
}

$2.文件夹大小的计算(要利用上面的$1提供的方法)

-(float)folderSizeAtPath:(NSString *)path{
  NSFileManager *fileManager=[NSFileManager defaultManager];
  NSString *cachePath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
  cachePath=[cachePath stringByAppendingPathComponent:path];
  long long folderSize=0;
  if ([fileManager fileExistsAtPath:cachePath])
  {
    NSArray *childerFiles=[fileManager subpathsAtPath:cachePath];
    for (NSString *fileName in childerFiles)
    {
      NSString *fileAbsolutePath=[cachePath stringByAppendingPathComponent:fileName];
      long long size=[self fileSizeAtPath:fileAbsolutePath];
      folderSize += size;
      NSLog(@"fileAbsolutePath=%@",fileAbsolutePath);

    }
    //SDWebImage框架自身计算缓存的实现
    folderSize+=[[SDImageCache sharedImageCache] getSize];
    return folderSize/1024.0/1024.0;
  }
  return 0;
}

其中folderSize+=[[SDImageCache sharedImageCache] getSize];这行代码是SDWebImage给我们提供的计算本地缓存图片大小的方法....(当然了,这个方法的底层实现依然是用的NSFileManager做的)

上面2个方法结合起来使用,就可以计算我们产生多少缓存啦....

2.计算好了缓存,那么怎么清除呢??

//同样也是利用NSFileManager API进行文件操作,SDWebImage框架自己实现了清理缓存操作,我们可以直接调用。
-(void)clearCache:(NSString *)path{
  NSString *cachePath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
  cachePath=[cachePath stringByAppendingPathComponent:path];

  NSFileManager *fileManager=[NSFileManager defaultManager];
  if ([fileManager fileExistsAtPath:cachePath]) {
    NSArray *childerFiles=[fileManager subpathsAtPath:cachePath];
    for (NSString *fileName in childerFiles) {
      //如有需要,加入条件,过滤掉不想删除的文件
      NSString *fileAbsolutePath=[cachePath stringByAppendingPathComponent:fileName];
      NSLog(@"fileAbsolutePath=%@",fileAbsolutePath);
      [fileManager removeItemAtPath:fileAbsolutePath error:nil];
    }
  }
  [[SDImageCache sharedImageCache] cleanDisk];
}

上面再清楚换存的时候也清除了2块地方,一个是我们自己缓存的文件夹;还有就是SDWebImage给我们缓存的图片文件....

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios 清除缓存  # ios清除应用缓存  # ios 清除缓存完整代码  # 给我们  # 好了  # 如有  # 我们可以  # 还有一个  # 结合起来  # 第三方  # 来实现  # 大家多多  # 就可以  # 这行  # 主要是  # 实现了  # 过滤掉  # 直接调用  # 当然了  # fileManager  # nil  # fileSizeAtPath  # NSString 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速上传自定义模板至建站之星?  JavaScript如何实现错误处理_try...catch如何捕获异常?  浅谈Javascript中的Label语句  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何在阿里云部署织梦网站?  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel Fortify是什么,和Jetstream有什么关系  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel如何自定义错误页面(404, 500)?(代码示例)  Python文件异常处理策略_健壮性说明【指导】  ,交易猫的商品怎么发布到网站上去?  如何快速搭建FTP站点实现文件共享?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何在云主机快速搭建网站站点?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  中国移动官方网站首页入口 中国移动官网网页登录  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  简单实现Android验证码  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  轻松掌握MySQL函数中的last_insert_id()  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  香港服务器租用费用高吗?如何避免常见误区?  如何在IIS7中新建站点?详细步骤解析  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  微信小程序 闭包写法详细介绍  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  canvas 画布在主流浏览器中的尺寸限制详细介绍  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  javascript日期怎么处理_如何格式化输出  简历没回改:利用AI润色让你的文字更专业  如何用花生壳三步快速搭建专属网站?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  JavaScript如何实现倒计时_时间函数如何精确控制  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何快速搭建高效香港服务器网站?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法