来自 电脑系统 2019-09-16 13:07 的文章
当前位置: 金沙澳门官网网址 > 电脑系统 > 正文

金沙澳门官网网址封装业务类,ios中的清除缓存

业务类:特意处理某项业务

卓殊一些的应用中是要做应用软件的清除缓存。具体代码如下:
1,获取缓存的目录方法
objc
[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]

把部分事情的作业逻辑封装起来,另外类必要管理这个事情的时候,直接调用业务类的措施就能够了大大减弱了另外类中的代码量,让代码看起来更干净,可读性更加好

2,获取一个对应目录的大小
```objc```

// 自己去计算SDWebImage做的缓存
+ (void)getFileSize:(NSString *)directoryPath completion:(void(^)(NSInteger))completion
{
    // 获取文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    BOOL isDirectory;
    BOOL isExist = [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];

    if (!isExist || !isDirectory) {
        // 抛异常
        // name:异常名称
        // reason:报错原因
        NSException *excp = [NSException exceptionWithName:@"pathError" reason:@"笨蛋 需要传入的是文件夹路径,并且路径要存在" userInfo:nil];
        [excp raise];

    }

//    开启子线程计算文件大小
    dispatch_async(dispatch_get_global_queue(0, 0), ^{

        // 获取文件夹下所有的子路径,包含子路径的子路径
        NSArray *subPaths = [mgr subpathsAtPath:directoryPath];

        NSInteger totalSize = 0;

        for (NSString *subPath in subPaths) {
            // 获取文件全路径
            NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];

            // 判断隐藏文件
            if ([filePath containsString:@".DS"]) continue;

            // 判断是否文件夹
            BOOL isDirectory;
            // 判断文件是否存在,并且判断是否是文件夹
            BOOL isExist = [mgr fileExistsAtPath:filePath isDirectory:&isDirectory];
            if (!isExist || isDirectory) continue;

            // 获取文件属性
            // attributesOfItemAtPath:只能获取文件尺寸,获取文件夹不对,
            NSDictionary *attr = [mgr attributesOfItemAtPath:filePath error:nil];

            // 获取文件尺寸
            NSInteger fileSize = [attr fileSize];

            totalSize += fileSize;
        }

        // 计算完成回调
        dispatch_sync(dispatch_get_main_queue(), ^{
            if (completion) {
                completion(totalSize);
            }
        });   
    });

}

3.1 在类的方面,申明这么些类的功效让其余人一看到那几个类就精通是干吗用的,收缩交流费用

3,清除对应目录下的文书。
objc

 // Created by xiaomage on 16/7/31. // Copyright © 2016年 XiaoMaG. All rights reserved. // 专门处理文件  /** *专门处理文件  */ @interface XTFileManager : NSObject
  • (void)removeDirectoryPath:(NSString *)directoryPath
    {
    // 获取文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];

    BOOL isDirectory;
    BOOL isExist = [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];

    if (!isExist || !isDirectory) {
    // 抛异常
    // name:卓殊名称
    // reason:报错原因
    NSException *excp = [NSException exceptionWithName:@"pathError" reason:@"笨蛋 必要传入的是文件夹路线,而且路线要存在" userInfo:nil];
    [excp raise];

    }

    // 获取cache文件夹下全部文件,不包罗子路径的子路线
    NSArray *subPaths = [mgr contentsOfDirectoryAtPath:directoryPath error:nil];

    for (NSString *subPath in subPaths) {
    // 拼接达成全路径
    NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];

      // 删除路径
      [mgr removeItemAtPath:filePath error:nil];
    

    }

3.2 每一个方法或质量,都供给使用文书档案注释让别的人能赶快领悟那几个类怎么用,减少交流到本

}

 /** * *作用:指定一个文件夹路径,获取文件夹尺寸 *参数(directoryPath):文件夹路径 *返回值:文件夹尺寸 */+(NSInteger)getSizeOfDirectoryPath:(NSString *)directoryPath;

3.3 每种方法确定要小心即使人家不根据措施的规定办法来使用,就报错,那样外人就不会感觉是形式的标题,能越来越好的管理错误比如做一些必不可缺的论断:决断传入的源委不是我们需求的格式,就抛至极> // 决断下是或不是是掩盖文件if ([subPath hasPrefix:@".DS"]) continue;// 是或不是是文件夹 BOOL isDirectory;// 判定文件是还是不是留存,并且是或不是是文件夹[mgr fileExistsAtPath:filePath isDirectory:&isDirectory];if (isDirectory) continue;

本文由金沙澳门官网网址发布于电脑系统,转载请注明出处:金沙澳门官网网址封装业务类,ios中的清除缓存

关键词: