ios-清除本地缓存(三种方式)

原创 2015年09月13日 09:58:27
缓存的清除对我们程序员来说很重要 
软件 运行时间过长 会导致缓存的增加 
从而导致手机的运行速度减慢 所以我们必须对缓存重视起来
下面简单介绍 清除缓存的三种方式
- (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 计算缓存和清除缓存

转载:http://www.tuicool.com/articles/nuaERjQ #pragma mark - 计算缓存大小 2 - (NSString *)getCacheSize ...

iOS 心得九:应用缓存的查看和清除

今天项目中要用到缓存的计算和清理,由于现在iOS就我一个小虾米,so,虽然自己以前没有写过,好了,多的不说,开始代码。 首先 惯例,代码的demo地址:https://github.com...

iOS清除缓存(OC实现)

//清除缓存按钮的点击事件 - (void)putBufferBtnClicked:(UIButton *)btn{ CGFloat size = [self folderSizeAtPat...

iOS开发73-清除UIWebView的缓存,H5页面第二次加载显示了第一次的页面

iOS开发73-清除UIWebView的缓存,H5页面第二次加载显示了第一次的页面 1.UIWebView清除Cookie: //清除cookies NSHTTPCookie *cookie;...

webview和H5 清除缓存和缓存文件删除。

webview和H5 清除缓存和缓存文件删除。

iOS原生App与H5页面交互 离线缓存 笔记

//webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法-- (BOOL)webView:(UIWebView*)webView shouldStartLoad...

ios 嵌套 H5 页面 返回缓存页面

问题描述1.点击去结算,出现弹框2.点击ios 返回按钮 退回到 前一页3.再次点击去结算 按钮 出现 更改bug之前的缓存页面解决方法让测试重新发活动 删除该活动后即可解决;...

Spring Boot 轻量级缓存 Ace-Cache

背景最近在使用spring boot时,需要用到redis做缓存,尝试使用Spring cache,发现spring cache里面集成了太多不需要的东西了,但有些关键的东西spring cache却...

浅谈iOS中WKWebView和UIWebView的清除缓存问题

最近产品经理在验收项目,在验收过程中发现了一个问题:网页中的数据存在缓存。 网页中加载的是一张图片,在后台将加载的图片换掉的时候再在App中加载此网页,发现展示的图片还是之前的图片,并没有更新,而且多...

ios webview清除缓存

。 分类: ios2012-12-24 11:17 1013人阅读 评论(0) 收藏 举报 [cpp] view plaincopyprint? NSURLCache * ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios-清除本地缓存(三种方式)
举报原因:
原因补充:

(最多只允许输入30个字)