您的位置:首页 > 移动开发 > IOS开发

iOS 阶段学习第25天笔记(iOS沙盒机制介绍)

2015-07-18 22:43 543 查看
iOS学习(OC语言)知识点整理

一、iOS沙盒机制介绍

1)概念:

每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问

其他应用的应用沙盒,但在ios8中已经开放访问(extension)

2)extension是ios8新开放的一种对几个固定系统区域的拓展机制,它可以在一定程度上弥补ios的沙盒机制对应用间的通信限制

3)应用沙盒一般包括以下几个文件目录

1、应用程序包:包含所有资源文件和可执行文件

2、Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录

3、tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除,应用没有运行时,系统也可能会自动清理

该目录下的文件,iTunes不会同步该目录,iPhone重启时该目录下的文件会丢失。

4、Libaray:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录。

5、Libaray/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除,一般存放体积比较大,

不是很重要的资源

6、Libaray/Preferences:保存应用的所有偏好设置,ios的Settings(设置)应用会在该目录中查找应用的设置信息,

iTunes会自动备份该目录。

4)获取应用的根目录 例如:

NSString *sandBox=NSHomeDirectory();


5)获取应用的Documents目录 例如:

//NSSearchPathForDirectoriesInDomains 返回绝对路径
//NSSearchPathForDirectoriesInDomains(要查找的目录, 是否是用户主目录, YES/NO 是否获取全路径);
NSArray *arry=  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSLog(@"%@",[arry lastObject]);


6)获取应用的Libaray目录 例如:

NSArray *arry2=  NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSLog(@"%@",[arry2 lastObject]);


7)获取应用的Caches目录 例如:

NSArray *arry3=  NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
NSUserDomainMask, YES);
NSLog(@"%@",[arry3 lastObject]);


8)获取应用的Preferences 目录,不能直接获取只能自行拼接 例如:

NSArray *arry4=  NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path=[arry4 lastObject];
path=[path stringByAppendingPathComponent:@"Preferences"];
NSLog(@"%@",path);


9)获取应用的tmp目录 例如:

NSString *tmp=NSTemporaryDirectory();
NSLog(@"%@",tmp);


10)写入文件到指定的应用目录下 例如:

NSArray *arry4=  NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path=[arry4 lastObject];
path=[path stringByAppendingPathComponent:@"Preferences/Test.txt"];
NSString *str=@"abcdefg";
[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];


11)将数据写入用户配置沙盒目录 例如:

1  //保存选择结果到沙盒
2 [[NSUserDefaults standardUserDefaults] setObject:_result forKey:@"userPrama"];
//立即同步数据
[[NSUserDefaults standardUserDefaults] synchronize];

4 //从沙盒取出保存结果
5 NSString *result = [[NSUserDefaults standardUserDefaults] valueForKey:@"userPrama"];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: