iOS-缓存大小显示功能和一键清理功能

  iAronTalk Blog opens.

  If you judge people, you have no time to love them.

-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  缓存占用了系统的大量空间,如何实时动态的显示缓存的大小,使用户清晰的了解缓存的积累情况,有效的进行一键清理呢?

  为方便读者和未来自己更好理解,我们创建这样场景。(在表视图的清除缓存一单元格内创建一个UILabel *cacheLabel用于显示当前缓存,当点击单元格弹出提示框,点击确定,清除缓存)。

  下面是实现代码:

 1 #pragma mark - 计算缓存大小
 2 - (NSString *)getCacheSize
 3 {
 4     //定义变量存储总的缓存大小
 5     long long sumSize = 0;
 6
 7     //01.获取当前图片缓存路径
 8     NSString *cacheFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
 9
10     //02.创建文件管理对象
11     NSFileManager *filemanager = [NSFileManager defaultManager];
12
13         //获取当前缓存路径下的所有子路径
14     NSArray *subPaths = [filemanager subpathsOfDirectoryAtPath:cacheFilePath error:nil];
15         //遍历所有子文件
16     for (NSString *subPath in subPaths) {
17             //1).拼接完整路径
18         NSString *filePath = [cacheFilePath stringByAppendingFormat:@"/%@",subPath];
19             //2).计算文件的大小
20         long long fileSize = [[filemanager attributesOfItemAtPath:filePath error:nil]fileSize];
21             //3).加载到文件的大小
22         sumSize += fileSize;
23     }
24     float size_m = sumSize/(1000*1000);
25     return [NSString stringWithFormat:@"%.2fM",size_m];
26
27 }
28 #pragma mark - 清除缓存提示(UITableViewDataSourceDelegate)
29 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
30 {
31     if (indexPath.row == 0) {
32         UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"缓存清除" message:@"确定清除缓存?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定",nil];
33         [alertView show];
34     }
35 }
36 #pragma mark - UIAlertViewDelegate方法实现
37 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
38 {
39     NSLog(@"代码执行到此");
40     //判断点击的是确认键
41     if (buttonIndex == 1) {
42         //01......
43         NSFileManager *fileManager = [NSFileManager defaultManager];
44         //02.....
45         NSString *cacheFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
46         //03......
47         [fileManager removeItemAtPath:cacheFilePath error:nil];
48
49         //04刷新第一行单元格
50         NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:0];
51         [_tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
52
53         //05 :04和05使用其一即可
54        [_tableView reloadData];//刷新表视图
55     }
56 @pragma -mark -放置于.m文件首段较为合适,本DEMO仅做功能性展示,实时监测缓存大小,从其他界面跳转到本页面,也需要刷新下表视图
57 - (void)viewWillAppear:(BOOL)animated
58 {
59     [super viewWillAppear:YES];
60     [_tableView reloadData];
61 }

   由于编者水平有限,不妥之处在所难免,恳请各个大牛批评指正,提出宝贵建议。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 03:50:52

iOS-缓存大小显示功能和一键清理功能的相关文章

慎用“360安全卫士”一键清理功能

一个同事的计算机安装的Windows 10操作系统,C盘是100GB左右,现在磁盘空间已经占满,求助于我.我删除了一些无用软件.将虚拟内存文件设置在D盘(如图1所示).使用Windows的"磁盘清理"功能之后(如图2所示),只清理出了几GB的空间,效果不大.我想起"360安全卫士"有个一键清理功能,可以清除无用的垃圾,就想用这个软件清理一下.在帮助别人之后,我想我自己的计算机也很长时间没有清理了,同时也想测试一下这个软件的效果,就在自己的计算机上安装了"3

ios 计算缓存大小并清理缓存

SDWebImage.WebView产生的缓存 1.计算缓存大小 //SDWebImage缓存大小  UILabel *cleanDetailText = [[UILabel alloc]init]; unsigned long iLength = [[SDImageCache sharedImageCache]getSize]/1024.0; if(iLength > 1024.0) { iLength = iLength/1024.0; NSString *sLength = [NSStri

Android特效专辑(七)——飞机升空特效,一键清理缓存,灵活运用动画会有不一样的感受

Android特效专辑(七)--飞机升空特效,一键清理缓存,灵活运用属性动画 最近的几篇博文反响还不错,也会继续的写下去的,关于这些特效的专辑,大多数也是借鉴大神的,最近由于工作的关系,会深入的了解一下Android BLE与硬件设备的串口通讯相关的内容,也会时不时的分享出来,当然,大家是一起学习,我毕竟也是初学者,今天讲的是小火箭的动画效果,用到了属性动画做了一些偷梁换柱的事情,明天还是后天,再更新一个心型起泡飞舞的特效,就不会这么持续的更新特效专辑这一系列了,毕竟<Only>这个软件也正在

手机APP缓存的获取和清理功能的实现

package com.loaderman.appcachedemo; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.PackageManager; import android.content.pm.PackageStats; import android.os.Bundle; import an

iOS缓存功能

之前做缓存,没有考虑过这个具体的实现. 移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取.删除缓存文件的实现. 获取缓存文件的大小 由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算. 计算单个文件大小   +(float)f

android获取缓存大小并清理缓存

本文主要注重介绍实战操作,理论知识可能介绍的不多,勿喷 简单说两句缓存的好处: 采用缓存,可以进一步大大缓解数据交互的压力,又能提供一定的离线浏览.下边我简略列举一下缓存管理的适用环境: 1. 提供网络服务的应用 2. 数据更新不需要实时更新,哪怕是3-5分钟的延迟也是可以采用缓存机制. 3. 缓存的过期时间是可以接受的(类似网易的新闻阅读,支持离线离线阅读) 这样所带来的好处: 1. 减小服务器的压力 2. 提高客户端的响应速度(本地数据提取嘛) 3. 一定程度上支持离线浏览(可以参考网易的那

Android开发记录20-获取缓存大小和清除缓存功能

Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等.我们开发产品的时候,可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比较人性化的设计点.例如笔者参与开发的一款产品的设置界面就提供了清除缓存的功能,如下图所

Android记录20-获取缓存大小和清除缓存功能

Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等.我们开发产品的时候,可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比较人性化的设计点.例如笔者参与开发的一款产品的设置界面就提供了清除缓存的功能,如下图所

IOS缓存机制详解

为什么要有缓存 应用需要离线工作的主要原因就是改善应用所表现出的性能.将应用内容缓存起来就可以支持离线.我们可以用两种不同的缓存来使应用离线工作.第一种是**按需缓存**,这种情况下应用缓存起请求应答,就和Web浏览器的工作原理一样:第二种是**预缓存**,这种情况是缓存全部内容(或者最近n条记录)以便离线访问. 像第14章中开发的Web服务应用利用按需缓存技术来改善可感知的性能而不是提供离线访问.离线访问只是无心插柳的结果.Twitter和Foursquare就是很好的例子.这类应用得到的数据