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