苹果Airpods pro耳机怎么改名字,苹果Airodro耳机怎么改名字?下面请看小编的详细介绍吧!......
iOS如何获取应用缓存大小和清理缓存
iOS开发过程中经常会使用到获取缓存和清理缓存的功能,给出一个示例做为参考。
工具/原料
- Xcode
- iPhone
方法/步骤
首先定义一个缓存管理类CachesManager继承于NSObject,为了方便调用使用单例模式,CachesManager.h中定义三个方法,分别为单例方法、获取缓存大小的方法以及清理缓存的方法,具体如下:
(CachesManager *)sharedManager;
- (BOOL)clearCaches;
- (NSString *)getAllTheCacheFileSize;
单例实现如下:
static CachesManager *_cachesManager = nil;
@implementation 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;
}
根据文件夹路径获取文件大小:
- (long long)fileSizeAtPath:(NSString*) filePath{
NSFileManager* manager = [NSFileManager defaultManager];
if ([manager fileExistsAtPath:filePath]){
return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
}
return 0;
}
遍历整个项目文件夹数获取所有文件大小:
- (float)requestCachesFileSize {
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);
}
获取缓存文件大小,精确到小数点后两位,单位为M。
- (NSString *)getAllTheCacheFileSize
{
return [NSString stringWithFormat:@"%.2f MB",[self requestCachesFileSize]];
}
清理缓存文件的实现,如果获取到缓存文件大小大于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;
}
}
在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];
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章