iOS 沙盒机制

一.沙盒介绍

ios中的沙盒机制是一种安全机制。每个iOS程序都有一个独立的文件系统,只能在对应的文件系统中操作,此区域被称为沙盒。

二.沙盒目录结构和代码示例

1.沙盒根目录

NSString *homeDir=NSHomeDirectory();
NSLog(@“沙盒根目录:%@”,homeDir);

2.Documents

Documents,用户数据文件(如从网上下载的图片视频等),程序更新,连接iTunes自动备份

NSString *docDir=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO) lastObject];
NSLog(@“Documents目录:%@”,docDir);

3.Library

Library,包含caches和preferences,可新建子文件夹,除cache外都可以被iTunes备份,希望备份但不想被用户看到的数据

NSString *libDir=[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@“Library目录:%@”,libDir);

3.1 Library/preferences

preferences,偏好设置,NSUserDefaults类创建的数据,plist文件,会被iTunes备份。

3.2 Library/caches

caches,使用时产生的支持文件缓存文件日志文件,不会备份,可能会被清理。

NSString *cachesDir=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, NO) firstObject];
NSLog(@“caches目录:%@”,cachesDir);

4.tmp

tmp,程序运行时产生的临时文件,重启会被清空,不会被itunes备份。

NSString*tmpDir=NSTemporaryDirectory();
NSLog(@“tmp目录:%@”,tmpDir);

5.AppName.app

NSBundle,程序包目录,程序需要的资源(图像,声音,编译好的代码,nib文件),不能在运行时修改程序包目录,否则无法启动。

NSString *bundle=[[NSBundle mainBundle] bundlePath];
NSLog(@“程序包目录:%@”,bundle);

NSBundle获取程序资源的路径:

NSString *mp4path=[[NSBundle mainBundle] pathForResource:@“shipin” ofType:@“mp4”];
NSLog(@“取:%@”,mp4path);

NSBundle加载nib文件

cell=[[[NSBundle mainBundle]loadNibNamed:cellId owner:self options:nil] lastObject];

三.函数说明

[NSSearchPathForDirectoriesInDomains(“想要查找的目录”,“想从哪个路径区域保护区查找”,“YES/NO”) firstObject];
1.想要查找的目录
NSApplicationDirectory =1, // 到applications (Applications)目录下
NSDemoApplicationDirectory, // 到Applications/Demos目录下
NSDeveloperApplicationDirectory, // 到Developer/Applications目录下.
NSAdminApplicationDirectory, // 到Applications/Utilities目录下
NSLibraryDirectory, // 到Library目录下
NSDeveloperDirectory, // 到Developer目录下.
NSUserDirectory, // 到用户的主目录下
NSDocumentationDirectory, // 到documentation (Documentation)的目录下
NSDocumentDirectory, // 到documents (Documents)目录下
NSCoreServiceDirectory, // CoreServices目录的位置 (System/Library/CoreServices)
NSAutosavedInformationDirectory NS_ENUM_AVAILABLE(10_6, 4_0) =11, // 自动保存的文档位置(Documents/Autosaved)
NSDesktopDirectory =12, // 本地用户的桌面

2.想从哪个路径区域保护区查找
typedef NS_OPTIONS(NSUInteger, NSSearchPathDomainMask) {
NSUserDomainMask =1, // 用户的主目录
NSLocalDomainMask =2, // 当前机器的本地目录
NSNetworkDomainMask =4, //在网络中公开可用的位置
NSSystemDomainMask =8, // 被苹果系统提供的,不可更改的位置 (/System)
NSAllDomainsMask = 0x0ffff // 上述所有及未来的位置
}

3.YES:完整路径
NO:路径的沙盒根目录部分用~代替,如~/Library/Caches

4.lastObject,firstObject,数组的两个对象方法,提取数组的第一个和最后一个元素。当数组元素只有一个时,结果一样。
无论是存储对象还是获取沙盒目录数组中文件路径,经常会用到[xx数组 firstObject], [xx数组 lastObject]。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值