1、应用沙盒概述app
每一个iOS应用都有本身的应用沙盒(应用沙盒就是文件系统目录),与其余文件系统隔离。应用必须待在本身的沙盒里,其余应用不能访问该沙盒。函数
应用沙盒的文件系统目录,以下图所示(假设应用的名称叫Layer)。操作系统
模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本)游戏
/Users/apple/Library/Application Support/iPhone Simulator/6.0/资源
Applications字符串
【备注】默认状况下,模拟器的目录是隐藏的,要想显示出来,须要在Mac终端输入下面的命令:同步
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES。string
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO。it
输完单击Enter键,退出终端,从新启动Finder就能够了io
重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->从新启动。
2、应用沙盒结构分析
应用程序包:(上图中的Layer)包含了全部的资源文件和可执行文件。
Documents:保存应用运行时生成的须要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录。
tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录。
Library/Caches:保存应用运行时生成的须要持久化的数据,iTunes同步设备时不会备份该目录。通常存储体积大、不须要备份的非重要数据。
Library/Preference:保存应用的全部偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录。
总结:
一、体积大(itunes不会备份)
(1) tmp(里面的内容可能会被系统随机清除)
(2) Library/Caches
二、体积小(itunes会备份)
(1) Documents
(2) Library/Preference
3、应用沙盒目录的常见获取方式
获取沙盒根目录:
NSString *home = NSHomeDirectory();
获取Documents:(2种方式):
(1)利用沙盒根目录拼接”Documents”字符串
NSString *home = NSHomeDirectory();
NSString *documents =
[home stringByAppendingPathComponent:@"Documents"];
其中stringByAppendingPathComponent方法能够直接在Documents前拼上斜杠。
不建议采用,由于新版本的操做系统可能会修改目录名
(2)利用NSSearchPathForDirectoriesInDomains函数:
NSUserDomainMask表明从用户文件夹下找,YES表明展开路径中的波浪字符“~”
NSArray *array =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
在iOS中,只有一个目录跟传入的参数匹配,因此这个集合里面只有一个元素:
NSString *documents = [array objectAtIndex:0];
获取tmp:
NSString *tmp = NSTemporaryDirectory();
获取Library/Caches:(跟Documents相似的2种方法):
(1)利用沙盒根目录拼接”Caches”字符串。
(2)利用NSSearchPathForDirectoriesInDomains函数(将函数的第2个参数改成:NSCachesDirectory便可)。
Library/Preference:
经过NSUserDefaults类存取该目录下的设置信息。