IOS清理缓存的几种方法,
- (long long) fileSizeAtPath:(NSString*) filePath{
NSFileManager* manager = [NSFileManager defaultManager];if ([manager fileExistsAtPath:filePath]){ return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];}return 0;}//遍历获得文件夹大小,返回多少M- (float ) folderSizeAtPath:(NSString*) folderPath{ NSFileManager* manager = [NSFileManager defaultManager];if (![manager fileExistsAtPath:folderPath]) return 0;NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];NSString* fileName;long long folderSize = 0;while ((fileName = [childFilesEnumerator nextObject]) != nil){ NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];folderSize += [self fileSizeAtPath:fileAbsolutePath];}return folderSize/(1024.0*1024.0);}1. 清除缓存第一种- (void)action:(id)sender{ //彻底清除缓存第一种方法UIButton * button = sender;[button setTitle:@"清理完毕" forState:UIControlStateNormal];NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);NSString *path = [paths lastObject];NSString *str = [NSString stringWithFormat:@"缓存已清除%.1fM", [self folderSizeAtPath:path]];NSLog(@"%@",str);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];}}2. SDImage第三方清除缓存的方法[[SDImageCache sharedImageCache] clearDisk];[[SDImageCache sharedImageCache] clearMemory];3. 彻底清除缓存第二种方法dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];NSLog(@"%@", cachPath);NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];NSLog(@"files :%d",[files count]);for (NSString *p in files) { NSError *error;NSString *path = [cachPath stringByAppendingPathComponent:p];if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { [[NSFileManager defaultManager] removeItemAtPath:path error:&error];}}[self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];});}-(void)clearCacheSuccess{ NSLog(@"清理成功");}