iOS 沙盒簡介 路徑獲取

1.沙盒結(jié)構(gòu)

出于安全考慮,iOS 應(yīng)用都只能訪問自己沙盒內(nèi)的文件,想要其它權(quán)限都要預(yù)先申請。

sandbox.png

  • Documents:應(yīng)用中用戶數(shù)據(jù)可以放在這里,但是基于NSUserDefaults 的首選項(xiàng)設(shè)置除外,iTunes 備份和恢復(fù)的時候會包括此目錄.
  • Library/Caches:存放緩存文件,iTunes 不會備份此目錄,此目錄下文件不會在應(yīng)用退出刪除.
  • tmp:存放臨時文件,iTunes 不會備份和恢復(fù)此目錄,此目錄下文件可能會在應(yīng)用退出后刪除.

2.如何訪問:

 NSString *path = NSHomeDirectory();

上面的代碼得到的是應(yīng)用程序目錄的路徑,
在該目錄下有三個文件夾:DocumentsLibrary、temp以及一個.app包。
該目錄下就是應(yīng)用程序的沙盒,應(yīng)用程序只能訪問該目錄下的文件夾。


NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
FOUNDATION_EXPORT NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);

此方法用于查找目錄,返回指定范圍內(nèi)的指定名稱的目錄的路徑集合
已經(jīng)習(xí)慣了蘋果爸爸的黑魔法,Cocoa 最糟糕的 API 之一。
它返回了一個包含用戶文檔目錄作為第一個元素的數(shù)組,
還好 NSArray -firstObject 可以輕松拿到地址。

參數(shù):

  • NSSearchPathDirectory directory 要搜索的目標(biāo)目錄 比如 NSDocumentDirectory 表明我們要搜索的是 Documents 目錄。
  • NSSearchPathDomainMask domainMask 指定搜索范圍 NSUserDomainMask 當(dāng)前應(yīng)用沙盒。
  • BOOL expandTilde 是否全部展開,不展開會有 ~ 比如 ~/Library/Caches 醬紫。

3.一些常見用法:

// 獲取沙盒主目錄路徑
NSString *homeDir = NSHomeDirectory();

// 獲取Documents目錄路徑
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

// 獲取Library的目錄路徑
NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];

// 獲取Caches目錄路徑
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

// 獲取tmp目錄路徑
NSString *tmpDir =  NSTemporaryDirectory();

參考資料:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容