iOS - 沙盒机制

时间:2023-11-28 19:06:50

iOS应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒。所有的非代码文件都要保存在此,例如图像,图标,声音,属性列表(plist文件),文本文件等。沙盒机制作为一种安全体系,核心内容是:沙盒对应用程序执行各种操作的权限限制。

(1)每个应用程序都有自己的存储空间;

(2)应用程序不能翻过自己的围墙去访问别的存储空间的内容;

(3)应用程序请求的数据都要通过权限监测,如果权限不允许,则不能读取;

现在我们在Mac上来查看下某个应用的沙盒位置。新建一个iOS项目,在viewDidLoad()方法中写入如下代码:NSLog(@"沙盒路径:%@",NSHomeDirectory());

[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; //也可以获取document路径

运行程序后,输出如下:获取这个路径可能还有其他办法,但是可能根据Mac版本或者Xcode版本的不同,这个路径会有所区别。所以最好使用这种代码方式来获取该应用的沙盒位置。

iOS - 沙盒机制

然后在终端下执行 open 目录位置     ,这个命令,就能在Finder中快速打开这个目录。这个目录下包含内容:

iOS - 沙盒机制

现在我们来讲讲这个目录结构:

默认情况下,每个沙盒含有3个文件夹:Documents,Library和tmp。因为应用的沙盒机制规定只能在几个目录下读写文件:

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

Library:存储程序的默认设置或其他状态信息。

Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出时删除。

tmp:一个创建临时文件的地方。

附带finder显示隐藏文件的终端命令:

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

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