iOS开发之应用沙盒

每一个iOS应用都有本身的应用沙盒(应用沙盒就是文件系统目录),与其余文件系统隔离。应用必须待在本身的沙盒里,其余应用不能访问该沙盒。app

 

模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本)函数

/Users/apple/Library/Application Support/iPhone Simulator/6.0/spa

Applications操作系统

【备注】默认状况下,模拟器的目录是隐藏的,要想显示出来,须要在Mac终端输入下面的命令:对象

显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES游戏

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO图片

输完单击Enter键,退出终端,从新启动Finder就能够了资源

重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->从新启动。字符串

2、应用沙盒结构分析同步

应用程序包(上图中的Layer)包含了全部的资源文件和可执行文件。

Documents:保存应用运行时生成的须要持久化的数据,iTunes同步设备时备份该目录。例如,游戏应用可将游戏存档保存在该目录。

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

Library/Caches:保存应用运行时生成的须要持久化的数据,iTunes同步设备时不会备份该目录。通常存储体积大、不须要备份的非重要数据。

Library/Preference:保存应用的全部偏好设置,iOSSettings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时备份该目录。

总结:

1、体积大(itunes不会备份)

1 tmp(里面的内容可能会被系统随机清除)

2 Library/Caches

2、体积小(itunes会备份)

1 Documents

2 Library/Preference

3应用沙盒目录的常见获取方式

获取沙盒根目录

NSString *home = NSHomeDirectory();

获取文件目录(2种方式)

方法一:利用沙盒根目录拼接字符串

例如:获取“Documents”文件夹完整目录

NSString *home = NSHomeDirectory();

NSString *documents =

[home stringByAppendingPathComponent:@"Documents"];//获取其余几个目录也相似

其中stringByAppendingPathComponent方法能够直接在Documents前拼上斜杠。

不建议采用,由于新版本的操做系统可能会修改目录名

方法二:利用NSSearchPathForDirectoriesInDomains函数:

获取根目录:

NSString *homeDir = NSHomeDirectory();

获取Documents目录路径:

NSArray  *paths

= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,

NSUserDomainMask, YES);

NSString *docDir = [paths objectAtIndex:0];//由于知足条件的只可能有一个

获取Caches目录路径:

NSArray  *paths

= NSSearchPathForDirectoriesInDomains(NSCachesDirectory,

NSUserDomainMask, YES);

NSString *cachesDir = [paths objectAtIndex:0];

获取tmp目录路径:

NSString *tmpDir = NSTemporaryDirectory();

4、获取应用程序程序包中资源
例如:获取程序包中一个图片资源(apple.png)路径的方法:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@apple ofType:@png];

UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];

代码中的mainBundle类方法用于返回一个表明应用程序包的对象。

相关文章
相关标签/搜索