好久没有更新博客了 ,上班无聊 ,写点最近总结的东西,感受开源中国愈来愈很差用了 GG 关于tableView的缓存清理的问题,不少时候咱们使用tableView加载的图片过多,会致使内存问题,博主特地整理了一下三种方式来优化tableView的内存管理;一共分为三种方式; 第一种:首先将图片的URL的md5值做为字典的k值,把图片经过字典的形式写进沙盒,当须要刷新数据的时候,首先判断内存中有没有图片,若是没有那么判断沙盒中有没有图片,若是没有就去判断有没有线程实在下载图片,若是没有线程在下载图片,那么新建一个线程去下载图片,而后缓存到本地,而后判断沙盒中的缓存是否到了一个临界值,这个临界值是本身设定的,若是到了临界值那么开始清除缓存; 第二种:通常程序中会有一个内存警告方法,若是出现了内存警告,那么就开始进行内存清除; 第三种:就是咱们用到的第三方SDWebImage里面会有一个清除内存的方法;这个是推荐方法!!缓存
第三种方法代码示例: 1.找到SDImageCache类优化
2.添加以下方法: - (float) checkTmpSize{ float totalSIze = 0;线程
//找到缓存路径orm
NSDirecoryEnumerator *flieEnumerator = [[NSFileManager defaultManager ] enumeratorAtPath:diskCachePath];图片
for (NSString *fileName in fileENumerator){ NSString *filePath = [diskCachePath stringByAppendingPathCompnent:fileName];内存
NSDictionary *attrs = [[NSFileManager defaultManger] attributesOfItemAtPath:filePath error:nil]; unsigned long long length = [attrs fileSize]; totalSize += length / 1024.0 / 1024.0; }md5
//返回文件的总共大小 return totalSize;get
//注意 新版的SDImageCache类有这个方法博客
[[SDImageCache sharedImageCache]getSize];string
3.在设置里这样使用 #pragma 清理缓存图片
- (void) clearTmpPics { //清除磁盘 [[ SDImageChache sharedIamgeChache ] clearDisk]; [[SDImageCache sharedImageCache] clearMemory];
NSLog(@"clear disk and memory");
float tmpSize = [[SDImageCache sharedImageCache] checkTmpSize];
NSString *clearCacheName = tmpSize >= 1? [NSString stringWithFormat:@"清除缓存(%.2fM)",tmpSize]:
[NSString stringWith Format:@"清除缓存.2fM",tmpSize * 1024];
[configDataArray replaceObjectAtIndex:2 withObject:clearCacheName];
[configTableView reloadData]; }