沙盒SandBox
阿新 • • 發佈:2019-01-03
每個App都有自己的沙盒,也就是一個儲存空間。App之間沒有許可權訪問對方的沙盒資源。沙盒的目錄下有三個資料夾:Documents
、Library
、temp
目錄結構
* Documents
:用於儲存使用者資料,iTunes
備份和恢復的時候會包括此目錄,所以,蘋果建議將程式中建立的或在程式中瀏覽到的檔案資料儲存在該目錄下。
* Documents/Inbox
:主要用來存放其他程式請求當前程式開啟的檔案。當前App只能讀取和刪除該目錄下的檔案,不能新建新檔案和修改已存在的檔案,如果想修改該目錄下已存在的檔案,需要將它先移動到別的資料夾下。
* Library
:包含兩個子目錄:Caches
Preferences
。Caches
用來存放使用者存放的檔案。Preferences
是APP的偏好設定,可以通過NSUserDefaults
來讀取和設定。itunes
會備份此目錄。 *
tmp
: 用於存放臨時檔案,這個可以放一些當APP退出後不再需要的檔案。app不執行的時候,系統也可能會銷燬此目錄儲存的臨時檔案。itunes
不備份此目錄
目錄路徑獲取
沙盒目錄
NSHomeDirectory()
.app
[NSBundle mainBundle].bundlePath
.app 中的資原始檔:[[NSBundle mainBundle] pathForResource :@"audio" ofType:@"wav"]
Documents
// 在某個範圍內容搜尋資料夾的路徑 // directory:獲取哪個資料夾.這裡:NSUserDomainMask 代表從使用者資料夾下找
// domainMask:在哪個範圍下獲取 NSUserDomainMask:在使用者的範圍內搜尋
// expandTilde是否展開全路徑, NO:~(選NO存commond+G不進去) YES:顯示全路徑
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES ); // 在iOS中,只有一個目錄跟傳入的引數匹配,所以這個集合裡面只有一個元素:
NSString *documentsPath = [array objectAtIndex:0];
Preferences
NSString *preferenceParh = NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES)[0];
Caches
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
Tmp
NSTemporaryDirectory()
參考: