沙盒

苹果为每个APP都提供一个沙盒用于存储数据。在沙盒目录中有四个目录,分别是Document目录,AppName.app目录,Library目录和tmp目录。其中在Library中还有两个目录:Caches和Preferences。
Document:将所有的应用程序数据写入到这个目录,这个目录用于存储用户数据或其他应该定期备份的信息。
AppName.app:应用程序程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以再运行时不能对这个目录中的内容进行修改。否则可能令程序无法启动。
Library:其中Caches目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息;Preferences目录包含应用程序的偏好设置文件,应使用NSUserDefaults类来去的和设置应用程序的偏好。
tmp:用于存放临时文件,保存应用程序再次启动过程中不需要的信息。
其中获取这些目录路径的方法如下:

NSString * homeDir = NSHomeDirectory();
NSLog(@"homeDir:%@",homeDir);
        
NSString * docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSLog(@"docDir:%@",docDir);
        
NSString * cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSLog(@"cachesDir:%@",cachesDir);
        
NSLog(@"tmpDir:%@",NSTemporaryDirectory());

获取应用程序程序包中资源文件路径的方法:

NSString * path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"fileTypeName"];

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

*用户生成的文件存放在Document目录里,而属于程序自己的数据存放在Library/Caches中。
APPLE对这方面的要求比较严格。主要原因是iOS的iCloud同步。

未完待续

本文参考自
https://blog.csdn.net/u012891546/article/details/50976790

你可能感兴趣的:(沙盒)