36期_iOS_沙盒介绍

2023-09-06  本文已影响0人  萧修

沙盒结构

沙盒机制下,每个程序之间的文件夹不能互相访问。

当应用程序需要向外部请求或接受数据时,都需要经过权限认证,否则,无法获取到数据。

沙盒根目录有三个文件夹,分别是Document,Library,tmp

NSString *homed = NSHomeDirectory();
NSLog(@"沙盒路径(NSHomeDirectory)%@",homed);

Document

保存应用程序本身产生的文件数据,例如游戏进度,iTunes备份和恢复的时候,会包括此目录

?不可保存网络下载资源?

获取路径

NSString *searchPathDir = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, 
NSUserDomainMask, 
YES);
NSLog(@"Document路径(NSSearchPathForDirectoriesInDomains)%@",searchPathDir);

查找文件路径的函数,返回值是一个数组,数组只有一个NSString元素

FOUNDATION_EXPORT NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(
NSSearchPathDirectory directory, 
NSSearchPathDomainMask domainMask, 
BOOL expandTilde);

NSSearchPathDirectory:表示查找的文件夹,本次从Document查找
NSSearchPathDomainMask:表示从哪里查找,本次从NSUserDomainMask用户主目录查找
expandTilde:表示返回路径展开

Library

有以下目录CachesPreferences

路径获取

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();
上一篇 下一篇

猜你喜欢

热点阅读