国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS中的緩存計算和清除(二)

2019-11-06 09:52:46
字體:
來源:轉載
供稿:網友

1.首先,一般我們項目中的緩存一般分為2大塊,一個是自己緩存的一些數據;還有一個就是我們使用的SDWebImage這個第三方庫給我們自動緩存的圖片文件緩存了**

<1>怎么計算緩存大小(主要是利用系統提供的NSFileManager類來實現)1.單個文件大小的計算

-(long long)fileSizeAtPath:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; if([fileManager fileExistsAtPath:path]){ long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize; return size; } return 0;}

2.文件夾大小的計算(要利用上面的$1提供的方法)

-(float)folderSizeAtPath:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; NSString *cachePath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; cachePath=[cachePath stringByAppendingPathComponent:path]; long long folderSize=0; if ([fileManager fileExistsAtPath:cachePath]) { NSArray *childerFiles=[fileManager subpathsAtPath:cachePath]; for (NSString *fileName in childerFiles) { NSString *fileAbsolutePath=[cachePath stringByAppendingPathComponent:fileName]; long long size=[self fileSizeAtPath:fileAbsolutePath]; folderSize += size; NSLog(@"fileAbsolutePath=%@",fileAbsolutePath); } //SDWebImage框架自身計算緩存的實現 folderSize+=[[SDImageCache sharedImageCache] getSize]; return folderSize/1024.0/1024.0; } return 0;}

其中folderSize+=[[SDImageCache sharedImageCache] getSize];這行代碼是SDWebImage給我們提供的計算本地緩存圖片大小的方法....(當然了,這個方法的底層實現依然是用的NSFileManager做的)上面2個方法結合起來使用,就可以計算我們總共產生多少緩存啦....

2.計算好了緩存,那么怎么清除呢??//同樣也是利用NSFileManager API進行文件操作,SDWebImage框架自己實現了清理緩存操作,我們可以直接調用。

//同樣也是利用NSFileManager API進行文件操作,SDWebImage框架自己實現了清理緩存操作,我們可以直接調用。-(void)clearCache:(NSString *)path{ NSString *cachePath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; cachePath=[cachePath stringByAppendingPathComponent:path]; NSFileManager *fileManager=[NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:cachePath]) { NSArray *childerFiles=[fileManager subpathsAtPath:cachePath]; for (NSString *fileName in childerFiles) { //如有需要,加入條件,過濾掉不想刪除的文件 NSString *fileAbsolutePath=[cachePath stringByAppendingPathComponent:fileName]; NSLog(@"fileAbsolutePath=%@",fileAbsolutePath); [fileManager removeItemAtPath:fileAbsolutePath error:nil]; } } [[SDImageCache sharedImageCache] cleanDisk];}

異步清除緩存

/** * 清理緩存 */-(void)cleanCache:(NSString *)path{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //文件路徑 NSString *directoryPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; NSArray *subpaths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:nil]; for (NSString *subPath in subpaths) { NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath]; [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil]; } });}

上面再清楚換存的時候也清除了2塊地方,一個是我們自己緩存的文件夾;還有就是SDWebImage給我們緩存的圖片文件....

轉載自點擊打開鏈接


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 融水| 湾仔区| 大城县| 成安县| 成都市| 保康县| 六盘水市| 吉木乃县| 白朗县| 瑞金市| 项城市| 三河市| 修水县| 田东县| 四会市| 西峡县| 霍州市| 阜新| 永顺县| 永安市| 佛教| 合川市| 曲水县| 贵德县| 盱眙县| 微山县| 昭通市| 景泰县| 沙河市| 平安县| 巧家县| 武陟县| 永修县| 赤城县| 金沙县| 安新县| 彰化县| 奈曼旗| 瓮安县| 宜兰市| 五家渠市|