苹果沙盒机制指的是应用(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 ,快捷键快速访问文件夹调试
../Library/Preferences/XXX.plist
复制代码