iOS为每个应用程序提供了一个独立的文件空间,该空间称为沙盒。应用程序与系统交互时候大多数情况都限制在自己沙盒,不可以去其它地方访问,所以非代码文件都要保存在沙盒,例如图像,图标,声音,映像,属性列表,文本文件等。
1.每个应用程序都有自己的存储空间。
2.应用程序不能翻过自己的围墙去访问别的存储空间的内容。
3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
Sandbox结构
Sandbox结构如下:
1 | Documents (iTunes同步设备时会备份该目录) |
Documents
保存应用运行时生成的需要持久化的数据(重要的、备份的)。
系统会自动备份该文件夹下面的所有文件。如果大文件(音视频,多媒体)放置在该文件夹下面的话,提交Appstore审核可能被拒接。解决办法:对大文件做非备份设置。
1 | #import <sys/xattr.h> |
Caches
保存应用运行时生成的需要持久化的数据(体积大、不重要、不备份)。
系统不会自动清理cache目录中的文件,需要程序开发时,”必须提供 cache目录的清理解决方案”。
网络请求的系统缓存会以db的形式存在Caches中。
Preferences
保存应用的所有偏好设置,iTunes同步设备时会备份该目录。
通过NSUserDefaults类添加的偏好设置,都在该文件夹中。
tmp
保存应用运行时所需要的临时数据或文件,使用完毕后文件会从该目录删除(例如断点下载)。
不定期清理:1.重新启动手机,tmp目录会被清空。2.系统磁盘空间不足时,系统也会自动清理,即使应用没有运行。