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
相关文章推荐
- IOS之Core Foundation框架和Cocoa Foundation框架区别
- ios-post请求
- GCD-ios 多线程
- 【IOS 开发学习总结-OC-7.3】C 语言特性——动态存储与静态存储
- iOS学习总结----通过代码自定义cell(cell的⾼度不⼀致)
- iOS中两个视图的翻转
- 猫猫学iOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- 【IOS 开发学习总结-OC-7.2】C 语言特性——局部变量与全局变量
- ios 检测应用程序升级问题
- Mac环境下svn的使用
- iOS开发:一个瀑布流的设计与实现(已实现缓存池功能,该功能使得瀑布流cell可以循环利用)
- 相册的实现
- 滚动界面的实现
- Ios中的普通屏幕和retina屏幕的了解
- [ios 程序启动与运转] - RunLoop个人小结
- iOS开发脚踏实地学习day07-美团
- Multithreading and Grand Central Dispatch on iOS for Beginners Tutorial
- iOS 多语言本地化 完美解决方案【自动+手动】
- iOS开发 ----- 仿QQ实现滑动显示后边按钮
- IOS 调用系统键盘 设置搜索字段和事件