tableView的内存缓存优化

   好久没有更新博客了 ,上班无聊 ,写点最近总结的东西,感受开源中国愈来愈很差用了 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]; }

相关文章
相关标签/搜索