您的位置:首页 > 移动开发 > IOS开发

iOS 清除缓存

2016-08-11 18:06 375 查看
转载:http://blog.csdn.net/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
17d38
 (![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  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: