iOS 開發之沙盒機制

2021-08-11 07:14:27 字數 4122 閱讀 9617

1.ios 沙盒機制簡介

沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制

ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用程式的沙盒檔案,當應用程式需要向外部請求或接收資料時,都需要經過許可權認證,否則,無法獲取到資料。

應用程式中所有的非**檔案都儲存在沙盒中,比如、聲音、屬性列表,sqlite資料庫和文字檔案等。

2.獲取沙盒路徑

通過nshomedirectory()獲取沙盒路徑並輸出

objective-c**

1

nslog(@"%@",nshomedirectory());

swift**

1

print(nshomedirectory())

3.沙盒檔案組成

沙盒的的根目錄有三個資料夾,分別是 documents,library,tmp

沙盒根目錄

documents/

documents中一般儲存應用程式本身產生檔案資料,例如遊戲進度,繪圖軟體的繪圖等, itunes備份和恢復的時候,會包括此目錄,

獲取documents檔案路徑

nssearchpathfordirectoriesindomains 是用來查詢檔案路徑的函式,其返回值是乙個陣列,這個陣列中只有乙個nsstring型別元素,這個元素儲存的就是查詢的路徑。

引數1: nsdocumentdirectory 表示需要查詢的是document資料夾

引數2:nsuserdomainmask 表示在使用者的主目錄中查詢

引數3:yes 表示返回路徑展開

objective-c

1

nsstring *path = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes).lastobject;

swift

1

let path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.documentdirectory, filemanager.searchpathdomainmask.userdomainmask,true).last

library/

library目錄下有兩個子目錄:caches 和 preferences

library目錄

獲取library路徑

objective-c

1

nsstring *path = nssearchpathfordirectoriesindomains(nslibrarydirectory, nsuserdomainmask, yes).lastobject;

swift

1

let path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.librarydirectory, filemanager.searchpathdomainmask.userdomainmask,true).last

library/caches/

此目錄用來儲存應用程式執行時生成的需要持久化的資料,這些資料一般儲存體積比較大,又不是十分重要,比如網路請求資料等。這些資料需要使用者負責刪除。itunes同步裝置時不會備份該目錄。

獲取library/caches檔案路徑

objective-c

1

nsstring *path = nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes).lastobject;

swift

1

let path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.cachesdirectory, filemanager.searchpathdomainmask.userdomainmask,true).last

library/preferences/

此目錄儲存應用程式的所有偏好設定,ios的settings(設定)應用會在該目錄中查詢應用的設定資訊。itunes同步裝置時會備份該目錄

在preferences/下不能直接建立偏好設定檔案,而是應該使用nsuserdefaults類來取得和設定應用程式的偏好.

獲取library/preferences/檔案路徑

objective-c

1

nsstring *path = nssearchpathfordirectoriesindomains(nspreferencepanesdirectory, nsuserdomainmask, yes).lastobject;

swift

1

let path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.preferencepanesdirectory, filemanager.searchpathdomainmask.userdomainmask,true).last

此方法獲取路徑是沙盒/library/preferencepanes,但並不存在這樣的路徑,想要訪問preferences資料夾,需要拼接路徑。

objective-c

1

"preferences"];

swift

1

let path = nssearchpathfordirectoriesindomains(filemanager.searchpathdirectory.librarydirectory, filemanager.searchpathdomainmask.userdomainmask,true).last! +"/preferences"

tmp/

此目錄儲存應用程式執行時所需的臨時資料,使用完畢後再將相應的檔案從該目錄刪除。應用沒有執行時,系統也可能會清除該目錄下的檔案。itunes同步裝置時不會備份該目錄

獲取tmp檔案路徑

objective-c

1

nsstring *path = nstemporarydirectory();

swift

1

let path = nstemporarydirectory()

如果有什麼不同見解 或文章有什麼錯誤希望大家能夠指出

iOS開發之沙盒機制(SandBox

沙盒簡述 3,沙盒根目錄結構 documents library temp。簡述一下documents library temp的區別 1,documents 用於儲存使用者資料,itunes備份和恢復的時候會包括此目錄,所以,蘋果建議將程式中建立的或在程式中瀏覽到的檔案資料儲存在該目錄下。方法一 ...

iOS開發之沙盒機制(SandBox

沙盒簡述 沙盒根目錄結構 documents library temp。簡述一下documents library tmp的區別 documents 用於儲存使用者資料,itunes備份和恢復的時候會包括此目錄,所以,蘋果建議將程式中建立的或在程式中瀏覽到的檔案資料儲存在該目錄下。方法一 前往資料夾...

ios沙箱軟體 iOS 開發之沙盒機制

1.ios 沙盒機制簡介 沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制 ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用...