一 iOS的沙盒机制(SandBox)
iOS中的沙盒机制是一种安全体系,它规定了应用程序只能在该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片,声音,属性列表和文本文件等.
1.每个应用程序都在自己的沙盒内
2.不能随意跨越自己的沙盒去访问别的应用程序的沙盒的内容
3.应用程序向外请求和接收数据都需要经过权限认证
默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件
Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录,如果保存了下载的数据,程序提交会被直接被拒绝
Library:存储程序的默认设置或其它状态信息;
Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
Library/Preferences:偏好设置文件
tmp:提供一个即时创建临时文件的地方,在iPhone在重启时,会丢弃所有的tmp文件。
获取沙盒目录的方法
//在模拟器上,沙盒目录是变化的,所以每次都要打印
// NSString * path = NSHomeDirectory();
NSArray * array = @[@1,@2,@3,@4,@5];
//获取沙盒目录的方法
NSString * path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//追加文件名
path = [path stringByAppendingPathComponent:@"data.plist"];
[array writeToFile:path atomically:YES];
NSLog(@"%@",path);
偏好设置,用户信息,是否推送,是否支持3G.
NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
存储偏好数据
[ud setObject:@"11" forKey:@"age"];
[ud setInteger:20 forKey:@"weight"];
setObject + synchronize
马上存入本地
[ud synchronize];
从本地获取
NSLog(@"%@", [ud objectForKey:@"username"]);
[ud removeObjectForKey:@"age"];