一, 沙盒的根目录有 有四个
第一个是:Documents 存储在这个文件夹中的文件会永久保存,不能存太大的文件
itunes会同步,例如,游戏应用可将游戏存档保存在该目录,注意:如果保存
网络下载的大的数据,会被拒绝上架
第二,三个是:library: 这个文件夹中的文件,需要程序员自己去清理缓存,
Caches: 保存应用运行时生成的需要持久化的数据,iTunes同步
设备时不会备份该目录, 特点: 一般储存体积大,不需要
备份的非重要的数据 值得注意的是需要提供缓存目录清理
Preferences:系统偏好设置文件夹
iOS的setting(设置)应用会在该目录中查找应用设置信息
iTunes 同步设备时会备份该目录
第四个是:tmp:系统会自动清理保存应用运行时所需的临时数据,程序员无需关心该
目录文件的删除,系统会自动清理,iTunes也不会备份该目录
二,沙盒路径介绍以及结构分析
a. 每个iOS应用都在自己的应用沙盒(应用沙盒就是应用的文件夹,)与其他文件系统隔离
b. 应用必须待在自己的沙盒里面,其他应用不能访问该沙盒
c. 应用程序包:包含了所有的资源文件和可执行文件,它是只读
用代码[NSBundle mainBundle]可以找到应用程序包
d . 程序运行时的数据需要保存在沙盒中
NSHomeDirectory() 可以访问到沙盒主目录
//1.主目录
NSString *home =NSHomeDirectory();
//2.临时目录
NSString*tmp = NSTemporaryDirectory();
//3.文档目录
NSString*docDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
//4.缓存目录
NSString*cacheDic = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
三. 用户偏好
是一种类似于字典的操作方式:不能直接获取位置
//1. 获取用户偏好
NSUserDefaults*defaluts = [NSUserDefaults standardUserDefaults];
//2.从用户偏好中读取数值
NSString *userName = [defalutsstringForKey:@"userName"];
if(userName.length >0) {
NSLog(@"%@",userName);
}else{
//在用户偏好中设置数值
[defaluts setObject:@"daoge" forKey:@"userName"];
}
注意: 在Xcode 6.0 之前,用户偏好的保存不是立即实现的,设置数值之后, 需要调用synchronize方法,在很多老项目中,仍然会发现此类代码