蘋果沙盒機制指的是應用(app)只能在系統獨立分配的一塊存儲空間區域裏去使用,包括寫入讀取等都是在這塊區域裏,想要訪問沙盒外的數據須要獲得系統的受權權限。macos
OSX自從10.6系統開始引入沙盒機制,規定發佈到Mac AppStore的應用,必須遵照沙盒約定。xcode
1.Network:網絡訪問控制
Incoming Connections(Server) :應用作爲Server對外提供HTTP,FTP等服務時須要打開
Outgoing Connections(Client) :作爲客戶端,訪問服務器時須要打開
複製代碼
2.Hardware:硬件資源控
Printing爲必須勾選。App的默認第一個頂級菜單中有打印功能的子菜單。
Camera (相機)
Micophone (麥克風)
USB (USB插口)
Printing
複製代碼
3.App Data:獲取系統的聯繫人,位置,日曆服務時須要打開
Contacts
Location
Calendar
複製代碼
4.File Access:文件和用戶目錄的訪問控制,分爲禁止none,只讀,讀寫3類
User Selected File:文檔類應用或者須要用戶選擇打開某個文件時,須要選擇合適的訪問權限.
Downloads Folder
Pictures Folder
Music Folder
Movies Folder
複製代碼
上圖的沙盒配置表示應用須要鏈接服務器獲取數據;應用菜單中有打印功能的菜單;緩存
選擇配置了沙盒的訪問控制信息後,Xcode會自動保存到一個擴展名爲.entitlements的plist文件中bash
應用打包時會對這個文件進行簽名沙盒中每一個須要訪問權限的項都對應一個key,對應的value,YES 或 NO表示是否容許訪問。 服務器
應用運行期間要獲取某個權限時,系統都會經過.entitlements去檢查應用是否有受權,若是沒有就拒絕訪問。markdown
OSX相對iOS要更爲開放一些,好比在訪問應用文件目錄,是能夠在電腦的文件目錄下找到的網絡
好比咱們想要用OC的NSUserDefaults區存儲一些能夠快速訪問的數據,下面咱們就來舉例說明一下如何在文件中找到這些存儲文件所在目錄位置app
此時打印路徑爲spa
沙盒緩存地址:/Users/admin/Library/Containers/SD.OSXkeepgoing/Data/Library
複製代碼
com+shift+G ,快捷鍵快速訪問文件夾調試
能夠看到當前macos應用所建立的沙盒目錄,其中Documents與Library爲固有文件夾,其餘的文件都爲OSX系統文件的替身鏡像文件夾。而咱們以前NSUserDefaults所保存的數據都是以plist表的形式保存在../Library/Preferences/XXX.plist
複製代碼