iOS沙盒(SanBox)机制

1.IOS沙盒机制

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。

1.每个应用程序都在自己的沙盒内

2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容

3.应用程序向外请求或接收数据都需要经过权限认证

 

2.查看模拟器沙盒文件夹

查看模拟器的沙盒文件夹在Mac电脑上的存储位置,文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library。

首先,这个文件夹是被隐藏的,所以要先将这些文件显示出来,打开命令行:

显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

然后重新启动Finder(点击屏幕左上角苹果标志——强制退出——选择Finder然后点击重新启动),这个时候在重新打开Finder就可以看到被隐藏的文件了。

然后按下图进入相应的文件夹,就可以到模拟器的沙盒文件目录了:

技术分享

接着进入一个模拟器版本,我这里是5.1。

技术分享

然后可以看到Applications下面存放的就是模拟器中所装的开发的应用程序,随便进入一个后可以看到,一个沙盒中包含了四个部分,如图所示:

技术分享

分别是

.app文件,这个就是可运行的应用文件;

Documents,苹果建议将程序中创建的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;

Library,存储程序的默认设置或其它状态信息,Library下有两个子文件夹Caches和Preferences:

     Library/Caches:保存应用运行时生成的需要持久化的数据(缓存文件),iTunes不会备份该目录,此目录下文件不会在应用退出删除;

     Library/Preferences:应用程序的偏好设置文件,iTunes 同步设备时会备份该目录。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好设置。

tmp,保存应用运行时所需的临时数据,使用完毕后再将相应地文件从该目录删除,应用没有运行时,系统也可能会清除该目录下得所有文件。iTunes 同步设备时不会备份该目录。

 

还有一种比较简单的办法就是直接点击Finder图标右键——前往文件夹——输入/Users/UserName/Library/Application Support/iPhone Simulator ,然后确认就可以了。UserName是你本机的用户名。

 

但xcode6上的一些路径都作了更改

模拟器的路径更改为:/Users/UserName/ Library/Developer/CoreSimulator。

技术分享

Devices文件夹下的每一个文件对应Xcode6下的一个模拟器,可以根据各个文件夹下的device.plist文件得到具体的是哪个模拟器:

技术分享

Xcode6中沙盒的路径为:/Users/UserName/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Containers/Data/Application/对应应用程序文件夹

技术分享Xcode6中偏好设置目录的路径为:/Users/UserName/Library/Developer/CoreSimulator/Devices/模拟器UDID/data/Containers/Bundle/Applications/对应应用程序文件夹/Library/Preferences

技术分享

但是却发现在Preferences文件夹下却什么都没有看到,通过查找相应Bundle Identifier的plist文件发现,
使用NSUserDefault方式创建的plist文件的具体路径为:/Users/用户名/Library/ Developer/CoreSimulator/Devices/模拟器UDID/data/Library/Preferences文件夹下:
技术分享
通过以上可以看出通过NSUserDefault创建的plist文件真正存放的位置发生了变化,成了在模拟器的资料库文件夹下的Preferences文件夹下,也就是说当我们在删除模拟器中的应用程序后,真正的plist文件是不会被删除的,如果需要清除偏好设置文件需要手动到对应的目录下删除!当然这只是在模拟器的情况下,真机上应该是不会出现这种问题的,具体情况可以尝试下。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。