iOS清除缓存

[objc] view plaincopy

  1. #pragma mark === 暂时不用清除缓存=====
  2. -(void)myClearCacheAction{
  3. dispatch_async(
  4. dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
  5. , ^{
  6. NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
  7. NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];
  8. NSLog(@"files :%lu",(unsigned long)[files count]);
  9. for (NSString *p in files) {
  10. NSError *error;
  11. NSString *path = [cachPath stringByAppendingPathComponent:p];
  12. if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
  13. [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
  14. }
  15. }
  16. [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];});
  17. }
  18. -(void)clearCacheSuccess
  19. {
  20. NSLog(@"清理成功");
  21. }
  22. //获取缓存大小。。
  23. CGFloat fileSize = [self folderSizeAtPath:cachePath];
  24. dispatch_async(dispatch_get_main_queue(), ^{
  25. cache.subtitle = [NSString stringWithFormat:@"%.2fMB",fileSize];
  26. [self.tableView reloadData];
  27. });
  28. - (CGFloat)folderSizeAtPath:(NSString *)folderPath
  29. {
  30. NSFileManager *manager = [NSFileManagerdefaultManager];
  31. if (![manager fileExistsAtPath:folderPath]) {
  32. return 0;
  33. }
  34. NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
  35. NSString *fileName = nil;
  36. long long folderSize = 0;
  37. while ((fileName = [childFilesEnumerator nextObject]) != nil) {
  38. NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
  39. folderSize += [self fileSizeAtPath:fileAbsolutePath];
  40. }
  41. return folderSize/(1024.0*1024.0);
  42. }
  43. - (long long)fileSizeAtPath:(NSString *)filePath
  44. {
  45. NSFileManager* manager = [NSFileManagerdefaultManager];
  46. if ([manager fileExistsAtPath:filePath]){
  47. return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
  48. }
  49. return 0;
  50. }
时间: 2024-10-05 04:19:11

iOS清除缓存的相关文章

iOS清除缓存功能开发

在APP开发中,大量的图片或消息占用系统内存,造成一堆垃圾信息,所以开发清除缓存功能就显得必不可少了. 代码段1:获取文件的大小 - (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:filePath]){ return [[manager attributesOfItemAt

iOS 清除缓存

- (void)clearDisk { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *path = [paths lastObject]; NSString *str = [NSString stringWithFormat:@"缓存已清除:%.1fM",[self folderSizeAtPath:path]]; NS

iOS开发日记14-NSFileManager(沙盒和清除缓存)

今天博主有一个文件管理的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像Android,没有SD卡概念,不能直接访问图像.视频等内容.iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内.默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录. Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数

iOS开发—清除缓存

iOS开发—清除缓存 一.修改了系统的头文件 报错示例: fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSArray.h' has been modified si

iOS webview 清除缓存

使用iOS的UIWebview会自动进行缓存,我们在开发的时候要记得清除Cookie和缓存. _webView = nil; [self cleanCacheAndCookie]; 调用的方法代码如下: /**清除缓存和cookie*/ - (void)cleanCacheAndCookie{ //清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookie

ios获取缓存文件的大小并清除缓存

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取.清除缓存文件的实现. 1. 获取缓存文件的大小-( float )readCacheSize{    NSString *cachePath = [NSSearchPathForDirectoriesInDomains (

iOS开发 -李洪强-清除缓存

// //  SetViewController.m //  dfhx // //  Created by dfhx_iMac_001 on 16/4/5. //  Copyright © 2016年 luoyun. All rights reserved. // #import "SetViewController.h" @interface SetViewController ()<UITableViewDelegate,UITableViewDataSource> @

如何知道缓存的大小,并且怎样清除缓存 -----ios

首先要了解怎么去拿到沙盒中的Cache文件路径 NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; 这个方法可以拿到沙盒中的Cache路径 缓存一般都会在这个文件夹中. // 获取文件夹尺寸 + (NSInteger)getDirectorySize:(NSString *)directoryPath {     // 获取文件管理者     NSFileManager *mgr =

iOS之清除缓存,ios缓存

//清除缓存按钮的点击事件 - (void)putBufferBtnClicked:(UIButton *)btn{ CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(