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

相關文章
相關標籤/搜索