一、沙盒中几个主要的目录
每个沙盒下面都有相似的目录结构,如下图所示(出自苹果官方文档):
每个应用的沙盒目录都是相似的,主要包含图中所示的四个目录:
1.MyApp.app
1.1 存放内容
该目录包含了应用程序本身的数据,包括资源文件和可执行文件等。程序启动以后,会根据需要从该目录中动态加载代码或资源到内存,这里用到了lazy loading的思想。
1.2 整个目录是只读的
为了防止被篡改,应用在安装的时候会将该目录签名,非越狱的情况下,该目录中的内容无法更改。
1.3 不会被iTunes同步
1.4 路径获取
NSString *homePath = NSHomeDirectory();
2.Documents
2.1存放内容
2.3 路径获取
NSArray *docArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [docArr objectAtIndex:0];
3.Documents/Inbox
3.1 存放内容
4.Library
4.3 路径获取
NSArray *libraryArr = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryPath = [libraryArr objectAtIndex:0];
5.Library/Caches
5.1 存放内容
主要是缓存文件,用户使用过程中缓存都可以保存在这个目录中,保存可再生的文件,比如网络请求的数据。鉴于此,yingyong程序通常还需要负责删除这些文件。
不会被iTunes同步
路径获取
NSString *cache = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
6.Library/Preferences
6.1 存放内容
应用程序的偏好设置文件。我们使用NSUserDefaults写的设置数据都会保存在这个目录下的一个plist文件中,这就是写到plist中!
会被iTunes同步。
7.tmp
7.1 存放内容
各种临时文件,保存应用再次启动时不需要的文件。而且,当应用不再需要这些文件时应该主动将其删除,因为该目录下的东西随时可能被系统清理掉,目前已知的一种可能清理的原因是系统磁盘存储空间不足的时候。
不会被iTunes同步。
路径获取
NSString *tempPath = NSTemporaryDirectory();