tableView的内存缓存优化

   很久没有更新博客了 ,上班无聊 ,写点最近总结的东西,感觉开源中国越来越不好用了 GG    关于tableView的缓存清理的问题,很多时候我们使用tableView加载的图片过多,会导致内存问题,博主特意整理了一下三种方式来优化tableView的内存管理;一共分为三种方式; 第一种:首先将图片的URL的md5值作为字典的k值,把图片通过字典的形式写进沙盒,当需要刷新数据的时候,首先判断内存中有没有图片,如果没有那么判断沙盒中有没有图片,如果没有就去判断有没有线程实在下载图片,如果没有线程在下载图片,那么新建一个线程去下载图片,然后缓存到本地,然后判断沙盒中的缓存是否到了一个临界值,这个临界值是自己设定的,如果到了临界值那么开始清除缓存; 第二种:一般程序中会有一个内存警告方法,如果出现了内存警告,那么就开始进行内存清除; 第三种:就是我们用到的第三方SDWebImage里面会有一个清除内存的方法;这个是推荐方法!!

第三种方法代码示例: 1.找到SDImageCache类

2.添加如下方法: - (float) checkTmpSize{ float totalSIze = 0;

//找到缓存路径

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; }

//返回文件的总共大小 return totalSize;

//注意 新版的SDImageCache类有这个方法

[[SDImageCache sharedImageCache]getSize];

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]; }

转载于:https://my.oschina.net/luhoney/blog/736051

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值