iOS開發之應用沙盒

1、應用沙盒概述app

每一個iOS應用都有本身的應用沙盒(應用沙盒就是文件系統目錄),與其餘文件系統隔離。應用必須待在本身的沙盒裏,其餘應用不能訪問該沙盒。函數

應用沙盒的文件系統目錄,以下圖所示(假設應用的名稱叫Layer)。操作系統

模擬器應用沙盒的根路徑在: (apple是用戶名, 6.0是模擬器版本)遊戲

/Users/apple/Library/Application Support/iPhone Simulator/6.0/資源

Applications字符串

【備註】默認狀況下,模擬器的目錄是隱藏的,要想顯示出來,須要在Mac終端輸入下面的命令:同步

顯示Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES。string

隱藏Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO。it

輸完單擊Enter鍵,退出終端,從新啓動Finder就能夠了io

重啓Finder:鼠標單擊窗口左上角的蘋果標誌-->強制退出-->Finder-->從新啓動。

2、應用沙盒結構分析

應用程序包:(上圖中的Layer)包含了全部的資源文件和可執行文件。

Documents:保存應用運行時生成的須要持久化的數據,iTunes同步設備時會備份該目錄。例如,遊戲應用可將遊戲存檔保存在該目錄。

tmp:保存應用運行時所需的臨時數據,使用完畢後再將相應的文件從該目錄刪除。應用沒有運行時,系統也可能會清除該目錄下的文件。iTunes同步設備時不會備份該目錄。

Library/Caches:保存應用運行時生成的須要持久化的數據,iTunes同步設備時不會備份該目錄。通常存儲體積大、不須要備份的非重要數據。

Library/Preference:保存應用的全部偏好設置,iOS的Settings(設置)應用會在該目錄中查找應用的設置信息。iTunes同步設備時會備份該目錄。

總結:

一、體積大(itunes不會備份)

(1) tmp(裏面的內容可能會被系統隨機清除)

(2) Library/Caches

二、體積小(itunes會備份)

(1) Documents

(2) Library/Preference

3、應用沙盒目錄的常見獲取方式

獲取沙盒根目錄

NSString *home = NSHomeDirectory();

獲取Documents(2種方式)

1)利用沙盒根目錄拼接」Documents」字符串

NSString *home = NSHomeDirectory();

NSString *documents =

[home stringByAppendingPathComponent:@"Documents"];

其中stringByAppendingPathComponent方法能夠直接在Documents前拼上斜槓。

不建議採用,由於新版本的操做系統可能會修改目錄名

2)利用NSSearchPathForDirectoriesInDomains函數:

NSUserDomainMask表明從用戶文件夾下找,YES表明展開路徑中的波浪字符「~」

NSArray *array =

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);

在iOS中,只有一個目錄跟傳入的參數匹配,因此這個集合裏面只有一個元素:

NSString *documents = [array objectAtIndex:0];

獲取tmp

NSString *tmp = NSTemporaryDirectory();

獲取Library/Caches(Documents相似的2種方法)

(1)利用沙盒根目錄拼接」Caches」字符串。

(2)利用NSSearchPathForDirectoriesInDomains函數(將函數的第2個參數改成:NSCachesDirectory便可)。

Library/Preference

經過NSUserDefaults類存取該目錄下的設置信息。

相關文章
相關標籤/搜索