天天看點

iOS沙盒(sandbox)機制

1、沙盒的基本概念和作用

每個ios應用都有自己的應用沙盒,應用沙盒就是檔案系統目錄,與其他應用的檔案系統隔離, ios系統不允許通路其他應用的應用沙盒。在ios8中已經開放通路(extension)。extension是iOS8新開放的一種對幾個固定系統區域的擴充機制,它可以在一定程度上彌補iOS的 沙盒機制對應用間通信的限制。
           

2、應用沙盒一般包括以下幾個檔案目錄:應用程式包、Documents、Libaray(下面有Caches和 Preferences目錄)、tmp。

、應用程式包:包含所有的資源檔案和可執行檔案。

、Documents:儲存應用運作時生成的需要持久化的資料,iTunes會自動備份該目錄。蘋果建議将程 序中建立的或在程式中浏覽到的檔案資料儲存在該目錄下,iTunes備份和恢複的時候會包括此目 錄

、tmp:儲存應用運作時所需的臨時資料,使用完畢後再将相應的檔案從該目錄删除。應用沒有運作 時,系統也有可能會清除該目錄下的檔案,iTunes不會同步該目錄。iphone重新開機時,該目錄下的 檔案會丢失。
、Library:存儲程式的預設設定和其他狀态資訊,iTunes會自動備份該目錄。

、Libaray/Caches:存放緩存檔案,iTunes不會備份此目錄,此目錄下檔案不會在應用退出删除。一 般存放體積比較大,不是特别重要的資源。

、Libaray/Preferences:儲存應用的所有偏好設定,ios的Settings(設定)應用會在該目錄中查找 應用的設定資訊,iTunes會自動備份該目錄。
           

2、擷取沙盒路徑

、擷取絕對路徑的方法: NSSearchPathForDirectoriesInDomains 傳回一個絕對路徑用來存放我們需要儲存的檔案
第一個參數:要擷取的沙盒檔案夾名稱
第二個參數:
NSUserDomainMask = ,//使用者主目錄中 
NSLocalDomainMask = ,//目前機器中 
NSNetworkDomainMask = ,//網絡中可見的主機 NSSystemDomainMask = 8,//系統目錄,不可修改(/System) NSAllDomainsMask = 0x0ffff,//全部
第三個參數:YES/NO 是否擷取全路徑 YES

、擷取不同區域
//Document目錄 
NSArray *paths  = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path  = [paths objectAtIndex:];

//Cache目錄 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,  ask, YES);
NSString *path  = [paths objectAtIndex:];

//Libaray目錄 
NSArray *paths  = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:];

//tmp目錄
NSString *tmpDir = NSTemporaryDirectory();
           

3、在沙盒檔案中建立檔案夾

在Document目錄下建立新的檔案夾test

iOS沙盒(sandbox)機制