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


相关推荐: Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何使用Blade组件和插槽?(Component代码示例)  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何快速登录WAP自助建站平台?  Android使用GridView实现日历的简单功能  Android实现代码画虚线边框背景效果  Python3.6正式版新特性预览  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel如何处理和验证JSON类型的数据库字段  Laravel中的Facade(门面)到底是什么原理  如何在云主机快速搭建网站站点?  Python文件流缓冲机制_IO性能解析【教程】  C语言设计一个闪闪的圣诞树  Laravel如何实现API资源集合?(Resource Collection教程)  手机网站制作与建设方案,手机网站如何建设?  浅谈Javascript中的Label语句  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  再谈Python中的字符串与字符编码(推荐)  浅谈javascript alert和confirm的美化  jQuery中的100个技巧汇总  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  JavaScript如何实现倒计时_时间函数如何精确控制  JS弹性运动实现方法分析  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel模型事件有哪些_Laravel Model Event生命周期详解  活动邀请函制作网站有哪些,活动邀请函文案?  详解Oracle修改字段类型方法总结  浅述节点的创建及常见功能的实现  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel如何自定义分页视图?(Pagination示例)  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  桂林网站制作公司有哪些,桂林马拉松怎么报名?  独立制作一个网站多少钱,建立网站需要花多少钱?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在阿里云高效完成企业建站全流程?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  zabbix利用python脚本发送报警邮件的方法  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  香港服务器如何优化才能显著提升网站加载速度?  Thinkphp 中 distinct 的用法解析