iOS開發-清理快取功能的實現
移動應用在處理網路資源時,一般都會做離線快取處理,其中以圖片快取最為典型。
今天介紹的離線快取功能的實現,主要分為快取檔案大小的獲取、刪除快取檔案的實現。
路徑巨集#define LHCCachesPath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]
計算檔案大小-(float)fileSizeAtPath:(NSString*)path{
NSFileManager*fileManager=[NSFileManagerdefaultManager];
if([fileManagerfileExistsAtPath:path]){
longlongsize=[fileManagerattributesOfItemAtPath:patherror:nil].fileSize;
returnsize/1024.0/1024.0;
}
return0;
}
計算目錄大小
- (CGFloat)floatWithPath:(NSString*)path{
NSFileManager*fileManager=[NSFileManagerdefaultManager];
floatfolderSize;
if([fileManagerfileExistsAtPath:path]) {
NSArray*childerFiles = [fileManagersubpathsAtPath:path];
for(NSString*fileNameinchilderFiles) {
NSString*fullPath = [pathstringByAppendingPathComponent:fileName];
folderSize += [selffileSizeAtPath:fullPath];
}
}
returnfolderSize;
}
計算好檔案目錄大小之後賦值給self.garbage
- (void)getFolderSizeBk
{
floatfolderSize = [self floatWithPath:LHCCachesPath];
self.garbage= [NSStringstringWithFormat:@"%.2fM",folderSize];
[self.tableViewreloadData];
}
清除快取大小,這個是我的寫的alert的點選事件
- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex) {
NSString*path =LHCCachesPath;
NSFileManager*fileManager=[NSFileManagerdefaultManager];
if([fileManagerfileExistsAtPath:path]) {
NSArray*childerFiles=[fileManagersubpathsAtPath:path];
for(NSString*fileNameinchilderFiles) {
NSString*absolutePath=[pathstringByAppendingPathComponent:fileName];
[fileManagerremoveItemAtPath:absolutePatherror:nil];
}
}
[selfgetFolderSizeBk];
}
}
以上就是計算快取和清除快取的程式碼了,附上幾張圖
相關文章
- 實現vue 的keep-alive快取功能VueKeep-Alive快取
- iOS 除SDWebImage之外清理記憶體中快取iOSWeb記憶體快取
- linux清理快取Linux快取
- 清理 Conda 快取和 Pip 快取快取
- pbootcms模板自動清理runtime快取,自動清理快取boot快取
- 如何定期清理DNS快取?清理DNS快取有什麼用?DNS快取
- 清理C盤快取,清理電腦C盤快取垃圾的操作步驟快取
- iOS開發之記憶體與快取iOS記憶體快取
- localstorage實現帶過期時間的快取功能快取
- linux docker 清理快取LinuxDocker快取
- docker清理快取命令Docker快取
- win10如何清理flash快取_win10清理fiash player快取的方法Win10快取
- 清理電腦快取垃圾快取
- windwos清理圖示快取快取
- Win10如何清理照片快取 win10系統清理照片快取的步驟Win10快取
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現十JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現三JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現四JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql實現的快遞櫃寄取快遞系統功能實現八JavaSpring BootMySql
- Win10系統實現自動清理垃圾檔案磁碟快取的方法Win10快取
- PbootCMS快取如何清理runtime資料夾下經常滿怎麼辦?清理快取的方法boot快取
- 如何清理MAC電腦的DNS快取MacDNS快取
- iOS快取的總結iOS快取
- Laravel 路由快取檔案清理Laravel路由快取
- Python中pycharm如何清理快取?PythonPyCharm快取
- Privatus for Mac網頁快取清理Mac網頁快取
- SpringBoot快取管理(二) 整合Redis快取實現Spring Boot快取Redis
- Win10系統如何清理應用商店快取_win10清理應用商店快取的方法Win10快取
- Jtti:Centos清理快取的方法是什麼JttiCentOS快取
- PbootCMS模板自動清理runtime快取boot快取
- 伺服器快取怎麼清理伺服器快取
- 使用ConcurrentHashMap實現快取HashMap快取
- 使用RxJava實現快取RxJava快取
- win10怎麼清理網路快取_win10電腦怎麼清理dns快取Win10快取DNS
- Win10 1909系統自帶的清理快取怎樣使用 win10 1909清理快取的使用方法Win10快取
- 2020-11-05---idea快取和索引的清理Idea快取索引
- Spring @cacheable註解實現的快取Spring快取
- Laravel 實現二級快取 提高快取的命中率和細粒化快取 keyLaravel快取
- 伺服器DNS快取怎麼清理伺服器DNS快取