iOS清除缓存

来源:互联网 发布:华为帐号无法获取数据 编辑:程序博客网 时间:2024/05/19 22:25

点击tableview的cell进行清除缓存

在cell设置中

在cell的右侧添加label用于显示缓存大小

  NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];      //调用计算缓存方法        CGFloat fileSize = [self folderSizeAtPath:cachPath];        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];        label.text = [NSString stringWithFormat:@"%.2fMB", fileSize];        label.textAlignment = 2;        cell.accessoryView = label;        [label release];


缓存计算方法

#pragma mark - 缓存计算- (CGFloat)folderSizeAtPath:(NSString *)folderPath{    NSFileManager *manager = [NSFileManager defaultManager];    if (![manager fileExistsAtPath:folderPath]) {        return 0;    }    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];    NSString *fileName = nil;    long long folderSize = 0;    while ((fileName = [childFilesEnumerator nextObject]) != nil) {        NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];        folderSize += [self fileSizeAtPath:fileAbsolutePath];    }    return folderSize/(1024.0*1024.0);}- (long long)fileSizeAtPath:(NSString *)filePath{    NSFileManager* manager = [NSFileManager defaultManager];    if ([manager fileExistsAtPath:filePath]){        return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];    }    return 0;}



在cell点击中

                //显示显示框                UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"是否清除所有缓存" preferredStyle:UIAlertControllerStyleAlert];                UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {                    NSLog(@"没有清除缓存");                }];                UIAlertAction *OKAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {                    NSLog(@"清除缓存");                   //调用清除缓存方法                    [self qingchuhuancun];                }];                [alertController addAction:cancelAction];                [alertController addAction:OKAction];                [self presentViewController:alertController animated:YES completion:nil];


清除缓存方法
- (void)qingchuhuancun{    dispatch_async(                   dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)                   , ^{                       NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];                       NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];                       for (NSString *p in files) {                           NSError *error;                           NSString *path = [cachPath stringByAppendingPathComponent:p];                           if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {                               [[NSFileManager defaultManager] removeItemAtPath:path error:&error];                           }                       }                       [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];});}-(void)clearCacheSuccess{    NSLog(@"清理成功");   //刷新页面    [_tableview reloadData];}



0 0
原创粉丝点击