美文网首页猿起码农之亮眼
OC清除缓存代码实例

OC清除缓存代码实例

作者: 飞天猪Pony | 来源:发表于2016-08-19 14:35 被阅读237次
    #import "ViewController.h"  
      
    @interface ViewController ()  
      
    @end  
      
    @implementation ViewController  
      
    - (void)viewDidLoad {  
        [super viewDidLoad];  
          
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
        btn.frame = CGRectMake(100, 100, 100, 50);  
        [btn setTitle:@"清除缓存" forState:UIControlStateNormal];  
        btn.backgroundColor = [UIColor purpleColor];  
        [btn addTarget:self action:@selector(putBufferBtnClicked:) forControlEvents:UIControlEventTouchUpInside];  
        [self.view addSubview:btn];  
    }  
    //清除缓存按钮的点击事件  
    - (void)putBufferBtnClicked:(UIButton *)btn{  
        CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSTemporaryDirectory()];  
          
        NSString *message = size > 1 ? [NSString stringWithFormat:@"缓存%.0fM, 删除缓存", size] : [NSString stringWithFormat:@"缓存%.0fK, 删除缓存", size * 1024.0];  
          
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:(UIAlertControllerStyleAlert)];  
          
        UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {  
            [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject];  
            [self cleanCaches:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject];  
            [self cleanCaches:NSTemporaryDirectory()];  
        }];  
          
        UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];  
        [alert addAction:action];  
        [alert addAction:cancel];  
        [self showDetailViewController:alert sender:nil];  
    }  
      
    // 计算目录大小  
    - (CGFloat)folderSizeAtPath:(NSString *)path{  
        // 利用NSFileManager实现对文件的管理  
        NSFileManager *manager = [NSFileManager defaultManager];  
        CGFloat size = 0;  
        if ([manager fileExistsAtPath:path]) {  
            // 获取该目录下的文件,计算其大小  
            NSArray *childrenFile = [manager subpathsAtPath:path];  
            for (NSString *fileName in childrenFile) {  
                NSString *absolutePath = [path stringByAppendingPathComponent:fileName];  
                size += [manager attributesOfItemAtPath:absolutePath error:nil].fileSize;  
            }  
            // 将大小转化为M  
            return size / 1024.0 / 1024.0;  
        }  
        return 0;  
    }  
    // 根据路径删除文件  
    - (void)cleanCaches:(NSString *)path{  
        // 利用NSFileManager实现对文件的管理  
        NSFileManager *fileManager = [NSFileManager defaultManager];  
        if ([fileManager fileExistsAtPath:path]) {  
            // 获取该路径下面的文件名  
            NSArray *childrenFiles = [fileManager subpathsAtPath:path];  
            for (NSString *fileName in childrenFiles) {  
                // 拼接路径  
                NSString *absolutePath = [path stringByAppendingPathComponent:fileName];  
                // 将文件删除  
                [fileManager removeItemAtPath:absolutePath error:nil];  
            }  
      }  
    

    相关文章

      网友评论

        本文标题:OC清除缓存代码实例

        本文链接:https://www.haomeiwen.com/subject/phubsttx.html