苹果前天发的财报,貌似现在用ios系统的比以前又多了一些,但是大家的iPhone购买的渠道也是五花八门,有的从非正规渠道购买的iPhone里的操作系统已经被越狱过,越狱这个事情和Android的root刷机是是一样的,正常情况下大家用手机都是没问题的。不过有些人总是觉得iOS和Android各种用的不爽,需要管理员权限,不过凡事有利有弊,以前有人买苹果刷机是因为输入法。现在输入法问题解决了,还是有人越狱,花几千大洋买个iPhone然后越狱,这种事情想想都很。。

Android系统中应用程序安装后,系统会为其分配一个独立的存储空间(Security Sandbox),存放字节码文件、资源文件及配置文件,同时为应用程序分配唯一的ID,标识应用程序的相关文件和资源,系统通过设置权限从而实现一个应用程序在一般情况下只能访问该应用程序的文件和资源。iOS操作系统差不多类似,iOS是从苹果的next操作系统发展过来的,next是一款类unix操作系统,unix系统对于文件权限的限制非常严格,正常情况下普通用户常用的操作根本用不到root权限,用户的操作请求假如是已分配权限,自然可以执行,反之需要root权限的话就不被允许。对于应用程序而言也是同样的,分配一个空间,然后只有允许的权限才能访问内容。

下面是张苹果官网以前关于沙盒方面的图片:

上面这个图就是常说的每个应用程序都有自己的存储空间,应用程序不能翻过自己的围墙去访问别的存储空间的内容,应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。其实简单理解每个应用都是其独立的分配空间,比如说如果360可以访问QQ聊天的内容,那么估计Pony就破产了~

sandbox的启用流程:①sandbox_init 通过libsandbox.dylib转换为二进制传递给kernel mac syscall TrustedBSD ②将sandbox_init 的请求发sandbox.kext 的扩展(看到这里会想到IIS扩展),扩展为当前进程安装证书,然后返回安装结果.③如果安装成功,每次进程的请求,都会被trusted bsd 发送给sandbox.kext 去匹配之前安装的证书规则。如果证书不匹配的话,则安装失败。
为了看下xCode模拟器中启动的Demo路径和类型,可以进行接下来的操作,在viewDidLoad加一句话:
    NSLog(@"路径:%@",NSHomeDirectory());

这个时候会看到一个路径,测试生成结果:

路径:/Users/用户名/Library/Developer/CoreSimulator/Devices/C53A5D69-DEDD-4598-9297-79B811E14DAD/data/Containers/Data/Application/0FCDA696-03B4-4D8D-B99B-E94D1F843561

 打开Finder是没法找到这个路径的,需要在终端中输入命令显示隐藏文件:

终端中显示隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

终端中不显示隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

模拟器的信息在CoreSimulator中:

路径比较长,之后是模拟器型号,模拟器的具体信息:

之后在Data中可以看到具体应用信息,和一个应用包括的目录信息:

Documents目录存储的是程序中创建的或在程序中浏览到的文件数据,Library存储程序的默认设置或其它 状态信息;Library下的Caches目录存放缓存文件,Library下的Preferences目录存放的应用程序的偏好设置,tmp保存的是创建和存放的临时文件,以上路径也可以通过程序获取路径viewDidLoad中加入以下代码:

   //获取Documents文件夹目录,NSDocumentDirectory获取Doucments文件夹目录,NSUserDomainMask是在当前应用沙盒中获取,所有应用沙盒目录组成一个数组结构的数据存放NSArray *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);NSLog(@"Documents目录:%@",[documentPath objectAtIndex:0]);//缓存Cache目录NSArray *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);NSLog(@"缓存目录:%@",[cachePath objectAtIndex:0]);//Library目录NSArray *domainPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);NSLog(@"资源库目录:%@",[domainPath objectAtIndex:0]);//临时文件temp目录NSLog(@"临时文件目录:%@",NSTemporaryDirectory()); 

转载于:https://www.cnblogs.com/xiaofeixiang/p/4257394.html

iOS开发-沙盒(sandbox)机制相关推荐

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

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

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

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

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

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

  4. (0051)iOS开发之沙盒(sandbox)机制和文件操作(一)

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

  5. (0052)iOS开发之沙盒(sandbox)机制和文件操作(二)

    我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的Home目录 NSString *homeDirectory = NSHomeDirectory(); NSLog(@" ...

  6. iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)

    转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下 ...

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

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

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

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

  9. ios沙箱模式开启_iOS沙盒(sandBox)机制总结

    写在前面: iOS沙盒机制, 随便百度一下就有很多很多文章, 这篇也没什么新的东西. 只是看千篇文章都不如自己总结一次来得记忆深刻. 1. iOS沙盒机制介绍 iOS应用程序只能在为该改程序创建的文件 ...

最新文章

  1. 【消息中间件】RabbitMQ 高级特性与应用问题
  2. 企业部署Windows 7指南
  3. 【完结】优秀的深度学习从业者都有哪些优秀的习惯
  4. IT十八掌作业_java基础第十六天_GUI/socket
  5. 函数指针声明时的形参列表可以没有
  6. 翻译记忆软件:Trados 7/2006,兼容性和基本用法讨论
  7. orgmode导出html,含有python代码块的ORG-MODE导出为HTML时出错
  8. C语言为四维数组申请动态内存空间的方法(二)
  9. 吴恩达机器学习之多变量线性回归实现部分
  10. Array类filter方法实例--查找功能.
  11. 如何实现台达触摸屏与台达PLC之间的远距离无线数据交换?
  12. 宏基4750网卡驱动linux,宏碁4750g无线网卡驱动下载
  13. 钽电容和贴片电容的区别
  14. 用LSTM做文本情感分类(以英文为例)附github代码
  15. CLRS 17.4动态表
  16. 教程:实现WinUSB通信系统的最简单的方式
  17. shell的几个重要命令,主要参数,循环语句以及变量处理
  18. App运营:怎么提升App下载安装量?
  19. 【布局优化】基于人工蜂群算法的无线传感器网(WSN)覆盖优化matlab源码
  20. 全国信息化和软件服务业工作座谈会召开

热门文章

  1. c++之十进制转二进制
  2. okhttp之 header详解
  3. 微信支付生成签名和验签SDK源码分析
  4. android分辨率2k3k4k,android 不同分辨率适配
  5. 基于HTTP可供浏览器调用的本地打印程序
  6. 豆瓣9.8,它凭「少儿不宜」吊打所有美剧!脑洞大开必看神作!【内附资源】...
  7. 数码相机常用CCD/CMOS尺寸对比
  8. 目标追踪(tracking)简介
  9. 遥感数据集的下载记录——MODIS产品为主
  10. [Crypto]ECB模式攻击