首页 > 手机专区 > 苹果手机 >

iOS如何获取应用缓存大小和清理缓存

来源:互联网 2023-02-21 17:15:12 486

iOS开发过程中经常会使用到获取缓存和清理缓存的功能,给出一个示例做为参考。HEy办公区 - 实用经验教程分享!

工具/原料

  • Xcode
  • iPhone

方法/步骤

  • 1

    首先定义一个缓存管理类CachesManager继承于NSObject,为了方便调用使用单例模式,CachesManager.h中定义三个方法,分别为单例方法、获取缓存大小的方法以及清理缓存的方法,具体如下:HEy办公区 - 实用经验教程分享!

    (CachesManager *)sharedManager;HEy办公区 - 实用经验教程分享!

    - (BOOL)clearCaches;HEy办公区 - 实用经验教程分享!

    - (NSString *)getAllTheCacheFileSize;HEy办公区 - 实用经验教程分享!

    iOS如何获取应用缓存大小和清理缓存HEy办公区 - 实用经验教程分享!

  • 2

    单例实现如下:HEy办公区 - 实用经验教程分享!

    static CachesManager *_cachesManager = nil;HEy办公区 - 实用经验教程分享!

    @implementation CachesManagerHEy办公区 - 实用经验教程分享!

    {HEy办公区 - 实用经验教程分享!

    NSString *_cachesDirPath;HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    - (instancetype)init {HEy办公区 - 实用经验教程分享!

    if (self = [super init]) {HEy办公区 - 实用经验教程分享!

    NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];HEy办公区 - 实用经验教程分享!

    _cachesDirPath = [cachesPath copy];HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    return self;HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    (CachesManager *)sharedManager {HEy办公区 - 实用经验教程分享!

    if (_cachesManager == nil) {HEy办公区 - 实用经验教程分享!

    @synchronized(self) {HEy办公区 - 实用经验教程分享!

    if (_cachesManager == nil) {HEy办公区 - 实用经验教程分享!

    _cachesManager = [[[self class] alloc] init];HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    return _cachesManager;HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    iOS如何获取应用缓存大小和清理缓存HEy办公区 - 实用经验教程分享!

  • 3

    根据文件夹路径获取文件大小:HEy办公区 - 实用经验教程分享!

    - (long long)fileSizeAtPath:(NSString*) filePath{HEy办公区 - 实用经验教程分享!

    NSFileManager* manager = [NSFileManager defaultManager];HEy办公区 - 实用经验教程分享!

    if ([manager fileExistsAtPath:filePath]){HEy办公区 - 实用经验教程分享!

    return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    return 0;HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    iOS如何获取应用缓存大小和清理缓存HEy办公区 - 实用经验教程分享!

  • 4

    遍历整个项目文件夹数获取所有文件大小:HEy办公区 - 实用经验教程分享!

    - (float)requestCachesFileSize {HEy办公区 - 实用经验教程分享!

    NSFileManager* manager = [NSFileManager defaultManager];HEy办公区 - 实用经验教程分享!

    if (![manager fileExistsAtPath:_cachesDirPath]) return 0;HEy办公区 - 实用经验教程分享!

    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:_cachesDirPath] objectEnumerator];HEy办公区 - 实用经验教程分享!

    NSString* fileName;HEy办公区 - 实用经验教程分享!

    long long folderSize = 0;HEy办公区 - 实用经验教程分享!

    while ((fileName = [childFilesEnumerator nextObject]) != nil){HEy办公区 - 实用经验教程分享!

    NSString* fileAbsolutePath = [_cachesDirPath stringByAppendingPathComponent:fileName];HEy办公区 - 实用经验教程分享!

    folderSize = [self fileSizeAtPath:fileAbsolutePath];HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    return folderSize/(1024.0*1024.0);HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    iOS如何获取应用缓存大小和清理缓存HEy办公区 - 实用经验教程分享!

  • 5

    获取缓存文件大小,精确到小数点后两位,单位为M。HEy办公区 - 实用经验教程分享!

    - (NSString *)getAllTheCacheFileSizeHEy办公区 - 实用经验教程分享!

    {HEy办公区 - 实用经验教程分享!

    return [NSString stringWithFormat:@"%.2f MB",[self requestCachesFileSize]];HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    iOS如何获取应用缓存大小和清理缓存HEy办公区 - 实用经验教程分享!

  • 5本页面未经许可获取自百度经验
  • 6

    清理缓存文件的实现,如果获取到缓存文件大小大于0,则进行清理操作。HEy办公区 - 实用经验教程分享!

    - (BOOL)clearCaches {HEy办公区 - 实用经验教程分享!

    if([self requestCachesFileSize] > 0) {HEy办公区 - 实用经验教程分享!

    NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:_cachesDirPath];HEy办公区 - 实用经验教程分享!

    for (NSString *file in files) {HEy办公区 - 实用经验教程分享!

    NSString *path = [_cachesDirPath stringByAppendingPathComponent:file];HEy办公区 - 实用经验教程分享!

    if([[NSFileManager defaultManager] fileExistsAtPath:path]) {HEy办公区 - 实用经验教程分享!

    [[NSFileManager defaultManager] removeItemAtPath:path error:nil];HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    return YES;HEy办公区 - 实用经验教程分享!

    } else {HEy办公区 - 实用经验教程分享!

    return NO;HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    }HEy办公区 - 实用经验教程分享!

    iOS如何获取应用缓存大小和清理缓存HEy办公区 - 实用经验教程分享!

  • 7

    在viewDidLoad中定义文本显示缓存大小,调用示例如下:HEy办公区 - 实用经验教程分享!

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, SCREEN_WIDTH, 50)];HEy办公区 - 实用经验教程分享!

    [self.view addSubview:label];HEy办公区 - 实用经验教程分享!

    HEy办公区 - 实用经验教程分享!

    NSString *strCash = [[CachesManager sharedManager] getAllTheCacheFileSize];HEy办公区 - 实用经验教程分享!

    label.text = strCash;HEy办公区 - 实用经验教程分享!

    label.textAlignment = NSTextAlignmentCenter;HEy办公区 - 实用经验教程分享!

    HEy办公区 - 实用经验教程分享!

    [[CachesManager sharedManager] clearCaches];HEy办公区 - 实用经验教程分享!

    iOS如何获取应用缓存大小和清理缓存HEy办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!HEy办公区 - 实用经验教程分享!


    标签: iosXCODE苹果获取清理

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码