iOS 清除缓存

  1. 转载:http://blog.csdn.net/u012701023/article/details/48413057
  2. 缓存的清除对我们程序员来说很重要   
  3. 软件 运行时间过长 会导致缓存的增加   
  4. 从而导致手机的运行速度减慢 所以我们必须对缓存重视起来  
  5. 下面简单介绍 清除缓存的三种方式  
  6. - (long long) fileSizeAtPath:(NSString*) filePath{  
  7.     NSFileManager* manager = [NSFileManager defaultManager];  
  8.     if ([manager fileExistsAtPath:filePath]){  
  9.         return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];  
  10.     }  
  11.     return 0;  
  12. }  
  13. //遍历文件夹获得文件夹大小,返回多少M  
  14. - (float ) folderSizeAtPath:(NSString*) folderPath{  
  15.     NSFileManager* manager = [NSFileManager defaultManager];  
  16.     if (![manager fileExistsAtPath:folderPath]) return 0;  
  17.     NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];  
  18.     NSString* fileName;  
  19.     long long folderSize = 0;  
  20.     while ((fileName = [childFilesEnumerator nextObject]) != nil){  
  21.         NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];  
  22.         folderSize += [self fileSizeAtPath:fileAbsolutePath];  
  23.     }  
  24.     return folderSize/(1024.0*1024.0);  
  25. }  
  26. //1. 清除缓存第一种  
  27. -(void)clearCache  
  28. {  
  29.     //彻底清除缓存第一种方法  
  30.    
  31.     
  32.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);  
  33.     NSString *path = [paths lastObject];  
  34.       
  35.     NSString *str = [NSString stringWithFormat:@"缓存已清除%.1fM", [self folderSizeAtPath:path]];  
  36.     NSLog(@"%@",str);  
  37.     NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:path];  
  38.     for (NSString *p in files) {  
  39.         NSError *error;  
  40.         NSString *Path = [path stringByAppendingPathComponent:p];  
  41.         if ([[NSFileManager defaultManager] fileExistsAtPath:Path]) {  
  42.             [[NSFileManager defaultManager] removeItemAtPath:Path error:&error];  
  43.         }  
  44.     }  
  45.     //    dispatch_async(  
  46.     //                   dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)  
  47.     //                   , ^{  
  48.     //                       NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];  
  49.     //                       NSLog(@"%@", cachPath);  
  50.     //  
  51.     //                       NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];  
  52.     //                       NSLog(@"files :%lu",(unsigned long)[files count]);  
  53.     //                       for (NSString *p in files) {  
  54.     //                           NSError *error;  
  55.     //                           NSString *path = [cachPath stringByAppendingPathComponent:p];  
  56.     //                           if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {  
  57.     //                               [[NSFileManager defaultManager] removeItemAtPath:path error:&error];  
  58.     //                           }  
  59.     //                       }  
  60.     //                       [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];});  
  61.       
  62. }  
  63. //- (void)action:(id)sender  
  64. //{  
  65. //    //彻底清除缓存第一种方法  
  66. //    UIButton * button = sender;  
  67. //    [button setTitle:@"清理完毕" forState:UIControlStateNormal];  
  68. //    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);  
  69. //    NSString *path = [paths lastObject];  
  70. //  
  71. //    NSString *str = [NSString stringWithFormat:@"缓存已清除%.1fM", [self folderSizeAtPath:path]];  
  72. //    NSLog(@"%@",str);  
  73. //    NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:path];  
  74. //    for (NSString *p in files) {  
  75. //        NSError *error;  
  76. //        NSString *Path = [path stringByAppendingPathComponent:p];  
  77. //        if ([[NSFileManager defaultManager] fileExistsAtPath:Path]) {  
  78. //            [[NSFileManager defaultManager] removeItemAtPath:Path error:&error];  
  79. //        }  
  80. //    }  
  81. //}  
  82.   
  83.   
  84. //2. SDImage第三方清除缓存的方法  
  85. //[[SDImageCache sharedImageCache] clearDisk];  
  86. //[[SDImageCache sharedImageCache] clearMemory];  
  87.   
  88. //3. 彻底清除缓存第二种方法  
  89. //  
  90. //dispatch_async(  
  91. //               dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)  
  92. //               , ^{  
  93. //                   NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];  
  94. //                   NSLog(@"%@", cachPath);  
  95. //  
  96. //                   NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];  
  97. //                   NSLog(@"files :%d",[files count]);  
  98. //                   for (NSString *p in files) {  
  99. //                       NSError *error;  
  100. //                       NSString *path = [cachPath stringByAppendingPathComponent:p];  
  101. //                       if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {  
  102. //                           [[NSFileManager defaultManager] removeItemAtPath:path error:&error];  
  103. //                       }  
  104. //                   }  
  105. //                   [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];});  
  106.   
  107. -(void)clearCacheSuccess  
  108. {  
  109.     NSLog(@"清理成功");  
  110. }  
  111.   
  112. @end  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值