沙盒是在受限的安全環(huán)境中運(yùn)行應(yīng)用程序的一種做法剃斧,這種做法是要限制授權(quán)的應(yīng)用程序的代碼訪問權(quán)限。iOS默認(rèn)的情況下只允許訪問程序自身的目錄結(jié)構(gòu),這個(gè)目錄被稱為“沙盒”垫言。
1. 沙盒結(jié)構(gòu)
2. 目錄特性
沙盒的目錄結(jié)構(gòu)中每個(gè)文件夾都有著不一樣的特性,在選擇存放目錄的時(shí)候要根據(jù)特性選擇合適的目錄倾剿。如果選擇了錯(cuò)誤的目錄筷频,有可能會(huì)無法通過審核。
應(yīng)用程序包:
這里存放的是應(yīng)用程序的源文件前痘,資源文件以及可執(zhí)行文件凛捏。
Documents:
最常用的目錄,一般存放比較重要的文件芹缔,比如用戶的數(shù)據(jù)信息坯癣,iCloud會(huì)自動(dòng)備份該文件夾的內(nèi)容。
Library/Caches:
用于存放與服務(wù)器交互時(shí)產(chǎn)生的可下載內(nèi)容和數(shù)據(jù)庫緩存文件最欠。
Tmp:
臨時(shí)數(shù)據(jù)保存到這里示罗,iCloud不會(huì)備份這些文件,盡管如此,還是應(yīng)該在使用后盡量刪除這里的數(shù)據(jù)芝硬,避免占用設(shè)備空間蚜点,內(nèi)存不足的時(shí)候系統(tǒng)也會(huì)清理這里的數(shù)據(jù)。
3. 沙盒目錄獲取方法
// Documents
func getDocumentDir() -> String {
return NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
}
// Caches
func getCachesDir() -> String {
return NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]
}
// Tmp
func getTmpDir() -> String {
return NSTemporaryDirectory()
}