iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。它包含三个文件夹:
-
Temp:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。
-
Documents: 苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录,如用户信息等永久性文件;
-
Library: 它包含两个文件夹 caches 和 preferences Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除,如图片、视频缓存; Library/Preferences:包含应用程序的偏好设置文件;
//沙盒的根目录
NSString *homePath = NSHomeDirectory();
//沙盒Documents路径
NSString *docuPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
//沙盒中Library路径
NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
//沙盒中Library/Caches路径
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//沙盒中Temp路径
NSString *tempPath = NSTemporaryDirectory();
复制代码
举个栗子:
// 拿到当前版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
// 将当前版本号存进沙盒
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"CFBundleVersion"];
[[NSUserDefaults standardUserDefaults] synchronize]; //synchronize:同步 不可少这句!!!
// 从偏好设置里读取版本号
NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:currentVersion];
cell.detailTextLabel.text = str;
复制代码
另外,APPStore中有一条明确规定,你的APP中缓存文件只能保存在沙盒路径下Caches文件夹或Temp文件夹下,不然将会被拒。而Temp文件夹下内容将会在APP退出时自动清除,所以我们清除APP缓存主要是清除Caches文件夹下的内容。
如果你想了解相关清理缓存 iOS利用SDWebImage实现缓存的计算与清理,请移步:http://www.jianshu.com/p/e77add077477