什么是沙箱模型?哪些操作是属于私有api范畴?

1、应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒。

2、应用程序间不能共享数据,沙盒里的文件不能被复制到其他应用程序文件夹中,也不能把其他应用程序文件夹中的文件复制到沙盒里。

3、苹果禁止任何读、写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中。

4、沙盒根目录里有三个文件夹:Documents,一般应该把应用程序的数据文件存到这个文件夹里,用于存储用户数据或其他应该定期备份的信息。Library,下有两个文件夹,Caches存储应用程序再次启动所需的信息,Preferences包含应用程序偏好设置文件,不过不要在这里修改偏好设置。temp,存放临时文件,即应用程序再次启动不需要的文件。

沙盒根目录里有三个文件夹分别是:documents,tmp,Library。

1、Documents目录:

您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。

2、AppName.app目录:

这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。

3、Library目录:

这个目录下有两个子目录:Caches和Preferences

Preferences目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.

Caches目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。

4、tmp目录:

这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

iOS沙盒(sandbox)中的几个目录获取方式:

//获取沙盒主目录路径

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();

//获取当前程序包中一个图片资源(apple.png)路径

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

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

例子:- (NSString *)dataFilePath {    

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    

NSString *documentsDirectory = [paths objectAtIndex:0];  

 return [documentsDirectory stringByAppendingPathComponent:@"shoppingCar.plist"];

}

NSFileManager* fm=[NSFileManager defaultManager];

if(![fm fileExistsAtPath:[self dataFilePath]]){

//下面是对该文件进行制定路径的保存

[fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];

//取得一个目录下得所有文件名

NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];

//读取某个文件

NSData *data = [fm contentsAtPath:[self dataFilePath]];

//或者 NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]]; } 

你可能感兴趣的:(什么是沙箱模型?哪些操作是属于私有api范畴?)