iOS工作记录10:清理缓存

我们在做项目开发的时候,经常会遇到设置清理缓存的问题,对于新手经常会考虑到什么数据存储啊,内存之类一大堆无用的想法,其实镔哥认为清理工程的缓存是一件非常简单的事情。

不用多说:见代码,立即大悟:

@property (nonatomic,
strong) UILabel * cachLabel;//显示缓存有多少m

最后节目显示:

cell.cachLabel.text = [NSString
stringWithFormat:@"(%.2fM)", [self
filePath]];

/"直接复杂下面代码就可以用"/正式开始了哦:============

//1:首先我们计算一下单个文件的大小

- (long long) fileSizeAtPath:(NSString*) filePath{

NSFileManager* manager = [NSFileManager
defaultManager];

if ([manager fileExistsAtPath:filePath]){

return [[manager
attributesOfItemAtPath:filePath error:nil]
fileSize];

}

return 0;

}

//2:遍历文件夹获得文件夹大小,返回多少M(提示:你可以在工程界设置()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);

}

//显示缓存大小

- (float)filePath

{

NSString * cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask, YES)
firstObject];

return [self
folderSizeAtPath:cachPath];

}

//清理缓存

- (void)clearFile

{

NSString * cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask, YES)
firstObject];

NSArray * files = [[NSFileManager
defaultManager] subpathsAtPath:cachPath];

NSLog(@"cachpath = %@", cachPath);

for (NSString * p
in files) {

NSError * error =
nil;

NSString * path = [cachPath
stringByAppendingPathComponent:p];

if ([[NSFileManager
defaultManager] fileExistsAtPath:path]) {

[[NSFileManager
defaultManager] removeItemAtPath:path
error:&error];

}

}

[self
performSelectorOnMainThread:@selector(clearCachSuccess)
withObject:nil
waitUntilDone:YES];

}

- (void)clearCachSuccess

{

NSLog(@"清理成功");

UIAlertView * alertView = [[UIAlertView
alloc] initWithTitle:@"提示"
message:@"缓存清理完毕"
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles: nil];

[alertView show];

[_tableView
reloadData];//清理完之后重新导入数据

}

//=====================另外一种写法更简单============

清理缓存的代码如下:

dispatch_async(

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

, ^{

NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];

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:nilwaitUntilDone:YES];});

-(void)clearCacheSuccess

{

NSLog(@"清理成功");

}

时间: 2024-10-10 16:14:57

iOS工作记录10:清理缓存的相关文章

iOS工作记录9:项目单例(直接拉用)

我就直接用个例子记录: 工程代码记录下来: // //  Ticket.h #import <Foundation/Foundation.h> @interface Ticket : NSObject // 实例化票据的单例 + (Ticket *)sharedTicket; // 在多线程应用中,所有被抢夺资源的属性需要设置为原子属性 // 系统会在多线程抢夺时,保证该属性有且仅有一个线程能够访问 // 注意:使用atomic属性,会降低系统性能,在开发多线程应用时,尽量不要资源 // 另外

iOS清理缓存的几种方法

iOS清理缓存的几种方法,有需要的朋友可以参考下: 1.计算文件大小: - (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:filePath]){ return [[manager attributesOfItemAtPath:filePath error:nil] file

iOS 清理缓存功能实现第一种方法

1 添加一个提示框效果导入第三方MBProgressHUD #import "MBProgressHUD+MJ.h" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <br><br>/**  *  清理缓存第一种方法  */ -(void)clearCache { dispatch_async(                dispatch_get_global_queue(DISP

iOS 清理缓存功能的实现第二种方法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 /**  *  清理缓存第二种方法  *  *  @param sender <#sender description#>  */ - (void)clearCache:(id)sender {     //彻底清除

ios开发--清理缓存

ios文章原文 一段清理缓存的代码如下: dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) , ^{ NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0]; NSArray *files = [[NSFileMana

iOS开发-清理缓存功能的实现

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取.删除缓存文件的实现. 获取缓存文件的大小 由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算. 计算单个文件大小 +(float)fileSizeAtPath:(NSStrin

ios 计算缓存大小并清理缓存

SDWebImage.WebView产生的缓存 1.计算缓存大小 //SDWebImage缓存大小  UILabel *cleanDetailText = [[UILabel alloc]init]; unsigned long iLength = [[SDImageCache sharedImageCache]getSize]/1024.0; if(iLength > 1024.0) { iLength = iLength/1024.0; NSString *sLength = [NSStri

ios 清理缓存(EGO)

一段清理缓存的代码如下: dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0) , ^{ NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES)objectAtIndex:0]; NSArray *files = [[NSFileManager defaul

201404-20151119工作记录

20140417-20151119 工作记录 =======================改科室BUG20140416 入职2014041720140418 下午忘了打卡 周五======================= =======================2014042120140422201404232014042420140425======================== ========================材料分析 20140428201404292014