- 了解沙盒概念
- 掌握沙盒根目录结构以及各自使用
沙盒结构
沙盒机制下,每个程序之间的文件夹不能互相访问。
当应用程序需要向外部请求或接受数据时,都需要经过权限认证,否则,无法获取到数据。
沙盒根目录有三个文件夹,分别是Document,Library,tmp
NSString *homed = NSHomeDirectory();
NSLog(@"沙盒路径(NSHomeDirectory)%@",homed);
Document
保存应用程序本身产生的文件数据,例如游戏进度,iTunes备份和恢复的时候,会包括此目录
?不可保存网络下载资源?
获取路径
NSString *searchPathDir = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory,
NSUserDomainMask,
YES);
NSLog(@"Document路径(NSSearchPathForDirectoriesInDomains)%@",searchPathDir);
- NSSearchPathForDirectoriesInDomains
查找文件路径的函数,返回值是一个数组,数组只有一个NSString
元素
FOUNDATION_EXPORT NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(
NSSearchPathDirectory directory,
NSSearchPathDomainMask domainMask,
BOOL expandTilde);
NSSearchPathDirectory
:表示查找的文件夹,本次从Document
查找
NSSearchPathDomainMask
:表示从哪里查找,本次从NSUserDomainMask
用户主目录查找
expandTilde
:表示返回路径展开
Library
有以下目录Caches
、Preferences
路径获取
NSString *searchLibraryPathDir = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject;
NSLog(@"Library路径(NSSearchPathForDirectoriesInDomains)%@",searchLibraryPathDir);
Caches
用来保存应用程序运行时生成的需要持久化的数据,这些数据存储体积较大,又不是很重要
应用于:网络下载的数据,用户可以删除
路径获取
NSString *slCachesPathDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
Preferences
保存应用程序所有偏好设置,iphone的设置应用会在该目录查找应用设置信息,iTunes同步时会备份该目录
可使用NSUserDefaults
获取和存储。
路径获取
NSString *slPreferencePathDir = NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES).firstObject;
/Library/PreferencePanes,不存在此路径,需要拼接
[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Preference"];
tmp
保存应用程序运行时的临时数据,使用完毕再将相应的文件删除,应用没有运行,系统可能删除此目录,iTunes同步会备份此目录。
路径获取
NSTemporaryDirectory();
网友评论