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不响应的原因及解决方法

