手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

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

时间:2024-10-12 01:04:31

1、首先定义一个缓存管理类CachesManager继承于NSObject,为了方便调用使用单例模式,CachesManager.h中定义三个方法,分别为单例方法、获取缓存大小的方法以及清理缓存的方法,具体如下:+ (CachesManager *)sharedManager;- (BOOL)clearCaches;- (NSString *)getAllTheCacheFileSize;

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

2、单例实现如下:static CachesMa艘绒庳焰nager *_cachesManager = nil;@implementati泠贾高框on CachesManager{ NSString *_cachesDirPath;}- (instancetype)init { if (self = [super init]) { NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; _cachesDirPath = [cachesPath copy]; } return self;}+ (CachesManager *)sharedManager { if (_cachesManager == nil) { @synchronized(self) { if (_cachesManager == nil) { _cachesManager = [[[self class] alloc] init]; } } } return _cachesManager;}

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

3、根据文件夹路径获取文件大小:- (long long)fileSizeAtPath:(NSString*) filePath{ NSFileManager* manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:filePath]){ return [[manager attributesOfItemAtPath:filePath error:nil] fileSize]; } return 0;}

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

4、遍历整个项目文件夹数获取所有文件大小:- (float)re孥恶膈茯questCachesFileSize { NSFileManager忮氽阝另* manager = [NSFileManager defaultManager]; if (![manager fileExistsAtPath:_cachesDirPath]) return 0; NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:_cachesDirPath] objectEnumerator]; NSString* fileName; long long folderSize = 0; while ((fileName = [childFilesEnumerator nextObject]) != nil){ NSString* fileAbsolutePath = [_cachesDirPath stringByAppendingPathComponent:fileName]; folderSize += [self fileSizeAtPath:fileAbsolutePath]; } return folderSize/(1024.0*1024.0);}

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

5、获取缓存文件大小,精确到小数点后两位,单位为M。- (NSString *)getAllTheCacheFileSize{ return [NSString stringWithFormat:@"%.2f MB",[self requestCachesFileSize]];}

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

6、清理缓存文件的实现,如果获取到缓存文件大小大于0,则进行清理操作。- (BOOL)clearCaches { if([self requestCachesFileSize] > 0) { NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:_cachesDirPath]; for (NSString *file in files) { NSString *path = [_cachesDirPath stringByAppendingPathComponent:file]; if([[NSFileManager defaultManager] fileExistsAtPath:path]) { [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; } } return YES; } else { return NO; }}

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

7、在viewDidLoad中定义文本显示缓存大小,调用示例如下:UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, SCREEN_WIDTH, 50)]; [self.view addSubview:label]; NSString *strCash = [[CachesManager sharedManager] getAllTheCacheFileSize]; label.text = strCash; label.textAlignment = NSTextAlignmentCenter; [[CachesManager sharedManager] clearCaches];

iOS如何获取应用缓存大小和清理缓存
© 手抄报圈