iOS开发之应用沙盒

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类存取该目录下的设置信息。

相关文章
相关标签/搜索