iOS應(yīng)用程序只能在為該改程序創(chuàng)建的文件系統(tǒng)中讀取文件,不可以去其它地方訪問(wèn),此區(qū)域被成為沙盒。它包含三個(gè)文件夾:
Temp:這個(gè)目錄用于存放臨時(shí)文件,保存應(yīng)用程序再次啟動(dòng)過(guò)程中不需要的信息。
Documents: 蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下,iTunes備份和恢復(fù)的時(shí)候會(huì)包括此目錄,如用戶信息等永久性文件;
Library: 它包含兩個(gè)文件夾 caches 和 preferences
Library/Caches:存放緩存文件,iTunes不會(huì)備份此目錄,此目錄下文件不會(huì)在應(yīng)用退出刪除,如圖片、視頻緩存;
Library/Preferences:包含應(yīng)用程序的偏好設(shè)置文件;
//沙盒的根目錄
NSString *homePath = NSHomeDirectory();
//沙盒Documents路徑
NSString *docuPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
//沙盒中Library路徑
NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
//沙盒中Library/Caches路徑
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//沙盒中Temp路徑
NSString *tempPath = NSTemporaryDirectory();
舉個(gè)栗子:
// 拿到當(dāng)前版本號(hào)
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
// 將當(dāng)前版本號(hào)存進(jìn)沙盒
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"CFBundleVersion"];
[[NSUserDefaults standardUserDefaults] synchronize]; //synchronize:同步 不可少這句!??!
// 從偏好設(shè)置里讀取版本號(hào)
NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:currentVersion];
cell.detailTextLabel.text = str;

讀取App版本號(hào).png
另外,APPStore中有一條明確規(guī)定,你的APP中緩存文件只能保存在沙盒路徑下Caches文件夾或Temp文件夾下,不然將會(huì)被拒。而Temp文件夾下內(nèi)容將會(huì)在APP退出時(shí)自動(dòng)清除,所以我們清除APP緩存主要是清除Caches文件夾下的內(nèi)容。
如果你想了解相關(guān)清理緩存 iOS利用SDWebImage實(shí)現(xiàn)緩存的計(jì)算與清理,請(qǐng)移步:http://www.itdecent.cn/p/e77add077477