向大家介紹下,自己寫得簡單地清除緩存功能,可能會有些用,可以幫助大家, 那樣我是最開心的.也可能還有很多缺陷問題,希望大家給些建議.讓我改正,我同樣開心
首先創建一個UIAlertController,來顯示緩存大小,還有是否清除
8F65C9B2-172D-4E63-BEE4-1753602F71ED.png
// 創建UIAlertController
- (void)createAlertController
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示信息" message:@"是否清除緩存" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
UIAlertAction *actionOk = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self ClearCache];
}];
[alertController addAction:actionCancel];
[alertController addAction:actionOk];
[self presentViewController:alertController animated:YES completion:nil];
}
下面就是計算緩存的內容
// 計算清除的緩存
- (void)CalculateCache
{
//找到緩存路徑
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths lastObject];
//folderSizeAtPath這個方法是遍歷文件夾獲得文件夾大小,下面封裝的.
float size = [self folderSizeAtPath:path];
self.strOfCache = [NSString stringWithFormat:@"緩存:%.1fM", size];
[self.tableView reloadData];
}
// 遍歷文件夾獲得文件夾大小, 返回多少m
- (float) folderSizeAtPath:(NSString *)folderPath
{
//創建文件管理對象,
NSFileManager *manager = [NSFileManager defaultManager];
// 判斷路徑是否存在
if (![manager fileExistsAtPath:folderPath])
{
return 0;
}
else
{
NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
NSString *fileName;
// 用來累加緩存的folderSize
long long folderSize = 0;
while ((fileName = [childFilesEnumerator nextObject]) != nil)
{
NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
//fileSizeAtPath方法是計算單個文件的大小, 下面封裝
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];
}else{
return 0;
}
}
// 清除緩存
- (void)ClearCache
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths lastObject];
NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:path];
//遍歷清除每個文件緩存
for (NSString *p in files)
{
NSError *error;
NSString *Path = [path stringByAppendingPathComponent:p];
if ([[NSFileManager defaultManager] fileExistsAtPath:Path])
{
[[NSFileManager defaultManager] removeItemAtPath:Path error:&error];
}
}
//重寫計算緩存
[self CalculateCache];
}