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

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

2015-09-13 09:58 537 查看
缓存的清除对我们程序员来说很重要
软件 运行时间过长 会导致缓存的增加
从而导致手机的运行速度减慢 所以我们必须对缓存重视起来
下面简单介绍 清除缓存的三种方式
- (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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: