好久沒有更新博客了 ,上班無聊 ,寫點最近總結的東西,感受開源中國愈來愈很差用了 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]; }