1、iOS沙盒机制原理

iOS应用程序只能在该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。

1.1、每个应用程序都有自己的存储空间
 1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容
 1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:sandbox对应用程序执行各种操作的权限限制。

2.获取应用软件沙盒sandbox方法:

通过在iOS程序viewDidLoad中打印NSString *path = NSHomeDirectory(); 然后在Finder中前往该打印出的路径,即可看到该程序的沙盒sandbox.

例如:/Users/wujia121/Library/Developer/CoreSimulator/Devices/3FDEE527-D4DB-492F-9490-1D04AF9559A8/data/Containers/Data/Application/82A190D8-C6F2-444F-90A5-17B051CC0021

(可见sandbox保存在Mac用户文件夹下,而SDK保存在Xcode包content中)

3.iphone沙盒模型的有四个文件夹:

分别是 documents,Library,tmp,app包。 手动保存的文件在documents文件里,NSUserdefaults保存的文件在tmp文件夹里。

1、Documents 目录:一般需要持久的数据都放在此目录中,可以在当中添加子文件夹,iTunes备份和恢复的时候,会包括此目录。您应该将所有de应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。

2、Library 目录:这个目录下有两个子目录:Caches 和 Preferences

Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.

     Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。

3、tmp 目录:这个目录用于存放临时文件,当iOS设备重启时,文件会被自动清除。

4、AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。(Xcode 6以后似乎.app不保存在沙盒中)

 

4.获取Sandbox下各文件夹路径的方法:

 //1. 沙盒根目录/

NSString *homePath = NSHomeDirectory();

NSLog(@"homePath:%@",homePath);

//2. 沙盒/Documents/

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

NSLog(@"docPath:%@",docPath);

//3. 沙盒/Library/

NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject];

NSLog(@"libPath:%@",libPath);

//3.1 沙盒/Library/Preferences

//NSString *preferPath = [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) firstObject];

//此方法获取路径是沙盒/Library/PreferencePanes并不存在这样的路径,想要访问Preferences文件夹,需要拼接路径。或者直接使用NSUserDefaults便可以在Preferences文件夹下创建plist文件。

NSString *preferPath = [libPath stringByAppendingPathComponent:@"Preferences"];

NSLog(@"preferPath:%@",preferPath);

//3.2 沙盒/Library/Cache

NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

NSLog(@"cachePath:%@",cachePath);

//4. 沙盒/tmp

NSString *tmpPath = NSTemporaryDirectory();

NSLog(@"tmpPath:%@",tmpPath);

//5. 打印xx.app位置

NSLog(@".appPath:%@",[[NSBundle mainBundle] bundlePath]);//打印app安装包的在模拟器/手机上的位置(~users/Application文件夹下)

真机打印结果:

homePath:         /var/mobile/Containers/Data/Application/849F64A3-BE4A-44FE-A789-6790A77E567A
docPath:          /var/mobile/Containers/Data/Application/849F64A3-BE4A-44FE-A789-6790A77E567A/Documents
libPath:          /var/mobile/Containers/Data/Application/849F64A3-BE4A-44FE-A789-6790A77E567A/Library
preferPath:       /var/mobile/Containers/Data/Application/849F64A3-BE4A-44FE-A789-6790A77E567A/Library/Preferences
cachePath:        /var/mobile/Containers/Data/Application/849F64A3-BE4A-44FE-A789-6790A77E567A/Library/Caches
tmpPath:  /private/var/mobile/Containers/Data/Application/849F64A3-BE4A-44FE-A789-6790A77E567A/tmp/
.appPath: /private/var/mobile/Containers/Bundle/Application/429B6769-6D90-4782-844C-CA95E8B28166/打印程序的沙盒地址2015.10.app

5.沙盒路径截图:

转载于:https://www.cnblogs.com/stevenwuzheng/p/5189114.html

iOS应用软件沙盒sandbox相关知识(整理)相关推荐

  1. ios沙箱软件_iOS应用软件沙盒sandbox相关知识(整理)

    1.iOS沙盒机制原理 iOS应用程序只能在该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...

  2. iOS开发-沙盒(sandbox)机制

    苹果前天发的财报,貌似现在用ios系统的比以前又多了一些,但是大家的iPhone购买的渠道也是五花八门,有的从非正规渠道购买的iPhone里的操作系统已经被越狱过,越狱这个事情和Android的roo ...

  3. iOS学习之iOS沙盒(sandbox)机制和文件操作(二)

    接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的Home目录 [cpp] view plaincopy N ...

  4. IOS开发沙盒路径的封装技术

    IOS开发沙盒路径的封装技术 实现对NSString 类的分类 导入头文件,即可获取沙盒路径 //沙盒 使用分类的思想 File 填 Sandbox File Type 填 Calegory 分类 C ...

  5. ios 获取沙盒文件名_IOS获取各种文件目录路径的方法

    iphone沙箱模型有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory( ...

  6. Redis面试题相关知识整理

    Redis面试题相关知识整理 1.Redis的应用场景 2.Redis的特点 3.Redis对各种数据类型的操作 4.Redis的持久化机制 5.Redis的缓存穿透/缓存击穿/缓存雪崩问题 6.Re ...

  7. 【转】医学影像处理相关知识整理(一)

    转自:医学影像处理相关知识整理(一) - 知乎 Segmentation to RT structure 近日做医疗影像处理相关的内容,感慨于这方面资料不全.散碎,遂记录自己获得的一些资料以供日后查阅 ...

  8. keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...

    Keil软件"C语言"与"汇编"混编 相关知识整理 用Keil在C中嵌入汇编1 在Keil中嵌入汇编2 介绍直接嵌入汇编代码的方法4 采用汇编可能会有的好处5 ...

  9. MySQL索引相关知识整理学习

    MySQL索引相关知识整理学习 前言 一.MySQL索引 哈希索引 B+树索引 B+树的优点 聚簇索引 非聚簇索引 聚簇索引和非聚簇索引的特点及区别: 二.特殊类型的索引 1.覆盖索引 2.联合索引 ...

最新文章

  1. php 数组键值分离,array_keys array_values::PHP数组键名于键值分离
  2. 高并发-【抢红包案例】之四:使用Redis+Lua脚本实现抢红包并异步持久化到数据库
  3. adams求微分方程c语言,ADAMS在求解微分方程组中的应用
  4. Drools 5.1.1(一)
  5. Net Core下多种ORM框架特性及性能对比
  6. 如何使用IntelliJ IDEA搭建spark开发环境(上)
  7. LeetCode#70 Climbing Stairs
  8. 【问答集锦】减少专家依赖,自动化机器学习如何实现AI普惠?
  9. 《LoadRunner性能测试巧匠训练营》——1.4 性能测试分类详解
  10. 如何在多台linux上同时跑相同的command?
  11. flink Table API 与SQL入门实战
  12. 工程师职业发展的四个阶段
  13. electron选mysql的优缺点_大型Electron应用本地数据库技术选型
  14. 继续教育-职场学习法 试题及答案
  15. 使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书
  16. 致即将逝去的大二和写给就要到来的大三
  17. html表格与CSS控制表格样式
  18. 指南针的实现代码两种方法,怎么用
  19. Kubernetes HPA管理
  20. 好记性不如烂笔头之Java基础复习笔记

热门文章

  1. 地线与接地螺丝_快来看看新能源电动汽车充电时,地线的安装情况吧!
  2. (107)FPGA面试题-Verilog编写200ns异步/同步低有效复位激励
  3. (33)System Verilog类1调用类2示例
  4. Vivado生成bit文件布局失败解决
  5. nvme驱动_用户态NVMe运维利器 SPDK NVMe 字符设备
  6. python dictionary_Python 字典(Dictionary)
  7. MFC中Combo 下来菜单不能展开(只显示一点点)
  8. 单片机中volatile的应用
  9. mysql 利用触发器(Trigger)让代码更简单
  10. Python学习-将list列表写入文件并读取方法汇总