封装缓存的类方法

// 获取磁盘大小

//获取硬盘大小
+ (CGFloat)getDiskSize
{
    NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSLog(@"%@", libPath);
    // 初始化文件管理者
    NSFileManager *manager = [NSFileManager defaultManager];
    // 获取lib下所有路径
    NSArray *libAllPath = [manager subpathsAtPath:libPath];
    NSInteger size = 0;
    for (NSString *path in libAllPath) {
        if (![path containsString:@"Preferences"]) {
            //把路径拼接全
            NSString *pathA = [libPath stringByAppendingPathComponent:path];
            //获取文件的所有信息
            NSDictionary *fileAttri = [manager attributesOfItemAtPath:pathA error:nil];
            //获取文件大小
            size += [fileAttri[@"NSFileSize"] integerValue];
        }
    }
    return size/1024.0/1024.0;
}

清除缓存的方法

//清除缓存
+ (void)clearDisk
{
    NSString *libPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];
    //初始化文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    //获取lib下所有路径
    NSArray *libAllPath = [mgr subpathsAtPath:libPath];

    for (NSString *path in libAllPath) {
        if (![path containsString:@"Preferences"]) {
            //把路径拼接全
            NSString *pathA = [libPath stringByAppendingPathComponent:path];
            //移除文件
            [mgr removeItemAtPath:pathA error:nil];
        }
    }
}

调用时  在清除缓存的cell中显示垃圾大小

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }
    switch (indexPath.row) {
        case 0:
            cell.textLabel.text = @"活动收藏";
            break;
        case 1:
            cell.textLabel.text = @"电影收藏";
            break;
        case 2:
        {
            cell.textLabel.text = @"清除缓存";
            NSString *size = [NSString stringWithFormat:@"%.2fM",[ClearDiskManager getDiskSize]];
            cell.detailTextLabel.text = size;
            break;
        }
        default:
            break;
    }

    cell.backgroundColor = [UIColor cyanColor];

    return cell;
}

//  点击cell时清理缓存

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch (indexPath.row) {
        case 1:
        {
            ListTableViewController *listVC = [[ListTableViewController alloc] init];
            [self.navigationController pushViewController:listVC animated:YES];
        break;
        }
        case 0:
        {
           ActivityTableViewController *activityVC = [[ActivityTableViewController alloc] init];
            [self.navigationController pushViewController:activityVC animated:YES];
            break;
        }
        case 2:
        {
            UIAlertController *alerController = [UIAlertController alertControllerWithTitle:@"提示" message:@"清除缓存之后可能耗费一点你的流量" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *action = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                [self dismissViewControllerAnimated:YES completion:nil];
            }];
            UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                [ClearDiskManager clearDisk];
                [self.tableView reloadData];
            }];
            [alerController addAction:action];
            [alerController addAction:action1];
            [self presentViewController:alerController animated:YES completion:nil];
        }
        default:
            break;
    }
}
时间: 2024-08-04 16:50:29

封装缓存的类方法的相关文章

uni-app,vue,react,Trao之缓存类封装

uni-app,vue,react,Trao之缓存类封装 一,介绍与需求 1.1,介绍 缓存主要分为如下几个 1.LocalStorage LocalStorage是永久性的本地缓存,存储在客户端的浏览器上,除非主动删除,是不会过期的.LocalStorage采用的是键值对的方式进行存储,存储方式只能是字符串.存储内容可以用图片.json.样式.脚本等. API基本使用方法: 1.1.localStorage.setItem() 存储 1.2.localStorage.getItem() 获取数

【新手总结】在.Net项目中使用Redis作为缓存服务

最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写,很零碎也没沉淀下来什么,这次算是一个系统学习和实践过程的总结. 和Redis有关的基础知识 Redis是一个开源的分布式NoSql数据库,可以用来做缓存服务.消息队列.数据存储等等,数据类型之丰富,效率之高,简直逆天!没有了解过的可以移步去问度娘~客户端之丰富,足可见它的社区有多强大: 其中C#的客户端就有这么多: 没错,我们的项目里也选择了最热门的StackExchange.Redis作

PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTime = 0){ //文件名 $filename = $this->_dir.$k.'.'.self::EXT; ..... line:25 把缓存时间设置为 11 位的数字,如果不满 11 位,则在时间前面补 0.再把缓存时间和缓存内容进行拼接: $cacheTime = sprintf('%011

swift项目第六天:中间发布按钮的封装以及监听点击事件

import UIKit /* 总结:1:给UIButton写分类,新建文件swiftFile,一般为了区分起名字都是名字-Extension,要想调用UI控件需要导入 import UIKit框架,然后给系统的类写分类:extension UIButton {},提供类方法或是构造函数的方法,把与该控件有关的业务逻辑全封装在分类的内部.2:封装方法:类方法:都是以class开头,class func 函数名(参数)->返回值类型{业务逻辑代码,return 返回值}:例子: class fun

四种网络请求的方式封装网络请求

封装网络请求类便捷, 适合多个地方使用. 第一封装下载方法 前提用Cocoapods或者直接引用第三方AFNetWorking 定义一个类NetWorkingManager, 继承于NSObject A: 在.h中写方法声明 #import <Foundation/Foundation.h> @interface NetWorkManager : NSObject - (void)downLoadWithUrl:(NSString *)url progress:(void(^)(float p

论底层封装--Memcached

背景: 这件事要从早之前说起,先前,我们考试系统中说要一起讲一下底层的东西.当时,组长给我和一清分的这个Memcached这个东西,要我们整理一下,然后给大家讲一讲.起初的东西不知道如何下手,因为没有资料.没有视频等等,我就找了九期的师哥要了一些资料,通过这些资料,我们做出了一些Demo,当时我们做出来之后,就没有真正运用到项目中,后来ITOO项目3.0开始后,底层说要叫几个负责模块的人,因为当时我做过这个方面,我就担任了底层缓存的任务. 第一版本: 我们底层之前是这样写的,在底层类库中: <s

缓存工厂之Redis缓存

这几天没有按照计划分享技术博文,主要是去医院了,这里一想到在医院经历的种种,我真的有话要说:医院里的医务人员曾经被吹捧为美丽+和蔼+可亲的天使,在经受5天左右相互接触后不得不让感慨:遇见的有些人员在挂号队伍犹如长龙的时候坐在收费窗口玩手机,理由是自己是换班的差几分钟才上班呢:遇见态度极其恶劣的主任医师,做咨询几个问题声音马上提高并言语中携带讽刺话语:还有其他几个遇见哈哈这里就不多说了,可能是某些医务人员觉得多您个不少,我有的是客源,所以个别是这种态度吧,还是市医院真不知道怎么混进去的. 以上是个

iOS开发针对SQL语句的封装

1.使用依赖关系 a.需要添加libsqlite3.tbd 静态库. b.需要添加第三方框架 FMBD.MJExtension. 2. SQL语句类封装名DataBaseSqlTool 类方法介绍: /** *  删除表 * *  @param tableName 数据表名称 * *  @return 删除表是否成功 */ + (BOOL)deleteTable:(NSString *)tableName; /** *  清除表 (清空表中的内容) * *  @param tableName 数

面对缓存,有哪些问题需要思考?

缓存可以说是无处不在,比如 PC 电脑中的内存.CPU 中的二级缓存.HTTP 协议中的缓存控制.CDN 加速技术都是使用了缓存的思想来解决性能问题. 缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹. 本文主要是讨论我们经常使用的分布式缓存 Redis 在开发过程中的相关思考. 1. 如何将业务逻辑与缓存之间进行解耦? 大部分情况,大家都是把缓存操作和业务逻辑之间的代码交织在一起的,比如(代码一): 从上面的代码可以看出以下几个问题: 缓存操作非常繁琐,产生非常多的重复代码: 缓存操作与