- 转载:http://blog.youkuaiyun.com/u012701023/article/details/48413057
- 缓存的清除对我们程序员来说很重要
- 软件 运行时间过长 会导致缓存的增加
- 从而导致手机的运行速度减慢 所以我们必须对缓存重视起来
- 下面简单介绍 清除缓存的三种方式
- - (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)clearCache
- {
- //彻底清除缓存第一种方法
- 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];
- }
- }
- // 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 :%lu",(unsigned long)[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)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(@"清理成功");
- }
- @end
iOS 清除缓存
最新推荐文章于 2025-01-20 18:09:54 发布