每个 iOS 应用都有自己的应用沙盒,就是文件系统目录,每个应用都只能在自己的沙盒内活动,不能随意跨越自己的沙盒去访问别的应用程序沙盒中的内容,iOS8 部分开放访问 extension,访问别人沙盒内的数据需要访问权限。
沙盒目录如下:
1.Documents
保存应用运行时生成的需要持久化的数据,iTunes 会自动备份该目录,苹果建议将应用程序浏览到的文件数据保存在该目录下。
获取路径
/**
NSSearchPathForDirectoriesInDomains
是用来查找文件路径的函数,其返回值是一个数组,这个数组中只有一个NSString类型元素,这个元素保存的就是查找的路径。
NSDocumentDirectory
表示需要查找的是Document文件夹
NSUserDomainMask
表示在用户的主目录中查找
YES 表示返回路径展开
*/
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
2.Library
获取路径
NSString *libPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
(1)Caches
存放缓存
此目录用来保存应用程序运行时生成的需要持久化的数据,这些数据一般存储体积比较大,又不是十分重要,比如网络请求数据等。这些数据需要用户负责删除。iTunes 同步设备时不会备份该目录。
获取路径
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
(2)Preferences
偏好设置,iTunes会自动备份
此目录保存应用程序的所有偏好设置,iOS 的 Settings(设置)应用会在该目录中查找应用的设置信息。iTunes 同步设备时会备份该目录
在 Preferences
目录下不能直接创建偏好设置文件,而是应该使用 NSUserDefaults
类来取得和设置应用程序的偏好。
获取路径
NSString *PreferencesPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"Preferences"];
(3)SplashBoard
系统启动图目录
储存程序启动图缓存数据资源,更新启动图后还是显示旧启动图可尝试清空此目录数据。
(4)Saved application state
保存应用程序状态的目录
用户期待应用能记住他们输入文本框的内容和启用的设置。如果一个用户切换到另一个应用,片刻后又切换回来,原先的应用可能已经在后台被系统杀掉了。为了在应用启动时使它的界面和之前保持一致,新版本的iOS通过State Preservation API将对象状态信息储存在Saved Application State目录中。开发者可以将需要保存的状态的UI标记出来。
苹果建议此目录中所有数据放在自定义子目录中,子目录名称以程序Bundle Identifier或公司名命名。
在保存应用状态时要相当小心,这也是一个容易泄露数据的地方。
3.tmp
临时文件
此目录保存应用程序运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes 同步设备时不会备份该目录。
获取路径
NSString *tmpPath = NSTemporaryDirectory();
网友评论