1.ios 沙盒機制簡介
沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制
ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用程式的沙盒檔案,當應用程式需要向外部請求或接收資料時,都需要經過許可權認證,否則,無法獲取到資料。
2.獲取沙盒路徑
通過nshomedirectory()獲取沙盒路徑並輸出
objective-c**nslog(@"%@",nshomedirectory());
swift**print(nshomedirectory())
3.沙盒檔案組成
沙盒的的根目錄有三個資料夾,分別是 documents,library,tmp
沙盒根目錄
documents/
documents中一般儲存應用程式本身產生檔案資料,例如遊戲進度,繪圖軟體的繪圖等, itunes備份和恢復的時候,會包括此目錄,
獲取documents檔案路徑
nssearchpathfordirectoriesindomains 是用來查詢檔案路徑的函式,其返回值是乙個陣列,這個陣列中只有乙個nsstring型別元素,這個元素儲存的就是查詢的路徑。
引數1: nsdocumentdirectory 表示需要查詢的是document資料夾
引數2:nsuserdomainmask 表示在使用者的主目錄中查詢
引數3:yes 表示返回路徑展開
objective-cnsstring *path = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes).lastobject;
swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.documentdirectory, filemanager.searchpathdomainmask.userdomainmask, true).last
library/
library目錄下有兩個子目錄:caches 和 preferences
library目錄
獲取library路徑
objective-cnsstring *path = nssearchpathfordirectoriesindomains(nslibrarydirectory, nsuserdomainmask, yes).lastobject;
swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.librarydirectory, filemanager.searchpathdomainmask.userdomainmask, true).last
library/caches/
此目錄用來儲存應用程式執行時生成的需要持久化的資料,這些資料一般儲存體積比較大,又不是十分重要,比如網路請求資料等。這些資料需要使用者負責刪除。itunes同步裝置時不會備份該目錄。
獲取library/caches檔案路徑
objective-cnsstring *path = nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes).lastobject;
swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.cachesdirectory, filemanager.searchpathdomainmask.userdomainmask, true).last
library/preferences/
此目錄儲存應用程式的所有偏好設定,ios的settings(設定)應用會在該目錄中查詢應用的設定資訊。itunes同步裝置時會備份該目錄
在preferences/下不能直接建立偏好設定檔案,而是應該使用nsuserdefaults類來取得和設定應用程式的偏好.
獲取library/preferences/檔案路徑
objective-cnsstring *path = nssearchpathfordirectoriesindomains(nspreferencepanesdirectory, nsuserdomainmask, yes).lastobject;
swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.preferencepanesdirectory, filemanager.searchpathdomainmask.userdomainmask, true).last
此方法獲取路徑是沙盒/library/preferencepanes,但並不存在這樣的路徑,想要訪問preferences資料夾,需要拼接路徑。
swiftlet path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.librarydirectory, filemanager.searchpathdomainmask.userdomainmask, true).last! + "/preferences"
tmp/
此目錄儲存應用程式執行時所需的臨時資料,使用完畢後再將相應的檔案從該目錄刪除。應用沒有執行時,系統也可能會清除該目錄下的檔案。itunes同步裝置時不會備份該目錄
獲取tmp檔案路徑
objective-cnsstring *path = nstemporarydirectory();
swiftlet path = nstemporarydirectory()
ios沙箱軟體 iOS app ipa 與 沙盒
documents 儲存應用執行時生成的需要持久化的資料,itunes同步裝置時會備份該目錄。例如,遊戲應用可將遊戲存檔儲存在該目錄 獲取路徑方法 nsstring documents nssearchpathfordirectoriesindomains nsdocumentdirectory,1...
IOS開發之 沙盒
ios沙盒目錄解析 出於安全考慮,ios系統的沙盒機制規定每個應用都只能訪問當前沙盒目錄下面的檔案 也有例外,比如系統通訊錄能在使用者授權的情況下被第三方應用訪問 這個規則把ios系統的封閉性展現的淋漓盡致。每個沙盒下面都有相似的目錄結構,如下圖所示 出自蘋果官方文件 每個應用的沙盒目錄都是相似的,...
iOS 開發之沙盒機制
1.ios 沙盒機制簡介 沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制 ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用...