美文网首页
iOS缓存计算和清理方法

iOS缓存计算和清理方法

作者: 王小王_2016 | 来源:发表于2017-02-22 11:07 被阅读36次

    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 }

    相关文章

      网友评论

          本文标题:iOS缓存计算和清理方法

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