美文网首页
ios-清理缓存

ios-清理缓存

作者: 紫嫣沁 | 来源:发表于2021-09-07 16:26 被阅读0次

    1,计算缓存


    -(void)caculateCacheSize{

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_async(queue, ^{

    _cacheStr = [NSString stringWithFormat:@"%.2fMB",[self folderSizeAtPath]];

    if (_cacheStr.length) {

    dispatch_sync_on_main_queue(^{

    [self.myTableView reloadData];

    });

    }

    });

    }

    #pragma mark 计算目录大小

    - (float)folderSizeAtPath{

    NSString *path  = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];

    NSFileManager *fileManager=[NSFileManager defaultManager];

    float folderSize = 0;

    if ([fileManager fileExistsAtPath: path]) {

    NSArray *childerFiles =[fileManager subpathsAtPath: path];

    for (NSString *fileName in childerFiles) {

    NSString *absolutePath=[path stringByAppendingPathComponent: fileName];

    folderSize +=[self fileSizeAtPath: absolutePath];

    }

    folderSize+=[YYImageCache sharedCache].diskCache.totalCost/1024.0/1024.0;

    return fabsf(folderSize);

    }

    return 0;

    }

    #pragma mark 计算单个文件的大小

    - (float)fileSizeAtPath:(NSString *)path{

    NSFileManager *fileManager=[NSFileManager defaultManager];

    if([fileManager fileExistsAtPath: path]){

    long long size=[fileManager attributesOfItemAtPath: path error: nil].fileSize;

    return size/1024.0/1024.0;

    }

    return 0;

    }

    2,执行清除缓存操作:

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

    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];

    }

    }

    [[YYImageCache sharedCache].diskCache removeAllObjects];

    相关文章

      网友评论

          本文标题:ios-清理缓存

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