博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 沙盒机制
阅读量:3733 次
发布时间:2019-05-22

本文共 2593 字,大约阅读时间需要 8 分钟。

文章目录

一.沙盒介绍

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]。

转载地址:http://ypwin.baihongyu.com/

你可能感兴趣的文章
Javaweb程序:eclipse新建一个servlet文件报错
查看>>
python基础(六)函数
查看>>
python基础(七)函数 二
查看>>
下载、安装pygame和pycharm
查看>>
使用pycharm绘制出一个小窗口或者最小开发框架
查看>>
下载安装requests库与爬取百度首页
查看>>
使用pygame绘制文字
查看>>
使用python爬取(搜索引擎关键字提交)
查看>>
爬虫的效率,
查看>>
爬虫的效率和使用python爬取网页照片或视频
查看>>
python 文件操作
查看>>
MY SQL 管理数据库和表
查看>>
pygame绘制简单游戏——壁球(图像型,节奏型)
查看>>
pygame绘制简单游戏——壁球(操控型,键盘事件)
查看>>
BeautifulSoup库的安装
查看>>
基于bs4库中的html内容的遍历方法,html格式化和编码
查看>>
Servlet会话API(Session)
查看>>
Servlet会话管理技术(隐藏表单字段)
查看>>
查看自己电脑的ip地址
查看>>
会话管理技术(隐藏表单字段和URL重写)
查看>>