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)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

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012701023/article/details/48413057
个人分类: iOS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭