iOS清理缓存

作者: OrekiSei | 来源:发表于2016-01-20 16:20 被阅读336次

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

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

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

原文  http://blog.csdn.net/sammyieveo/article/details/41513865

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

-( void )clearCacheSuccess

{

NSLog ( @" 清理成功 " );

}

相关文章

  • iOS开发-一句代码调用实现清理缓存功能

    iOS开发-清理缓存,将计算缓存,清理缓存封装成类方法,并将清理结果利用block方法实现返回,一键调用,轻松实现...

  • iOS 清理缓存

    前言: 清理缓存功能几乎是苹果手机的标配吧,今天写了一个清理缓存的工具类,给大家分享一下。 使用: 可以在这里去下...

  • ios - 清理缓存

    直接上demo LYFielService.h LYFielService.m 在Controller的应用

  • iOS 清理缓存

    不多说,直接上代码,如下:

  • iOS缓存清理

    为了更好的管理和利用资源,我们经常要做一些缓存的清理工作,封装一个缓存清理的工具类,来服务于项目开发工作很有必要。...

  • iOS 清理缓存

    通常,在我们加载图片的时候,一般都会做缓存处理,像SDWebImage,YYWebImage都是有的,但是有缓存,...

  • iOS 清理缓存

    计算文件夹大小 清除文件夹下的内容

  • iOS 清理缓存

  • IOS清理缓存

    IOS清理缓存的几种方法,有需要的朋友可以参考下。 - (long long) fileSizeAtPath:(N...

  • iOS清理缓存

    我们在做项目开发的时候,经常会遇到设置清理缓存的问题,对于新手经常会考虑到什么数据存储啊,内存之类一大堆无用的想法...

网友评论

    本文标题:iOS清理缓存

    本文链接:https://www.haomeiwen.com/subject/ntdlkttx.html