1.iOS 沙盒机制简介

沙盒也叫沙箱,英文standbox,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。在沙盒机制下,每个程序之间的文件夹不能互相访问。iOS系统为了保证系统安全,采用了这种机制

iOS 应用程序在安装时,会创建属于自己的沙盒文件,应用程序不能直接访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。

应用程序中所有的非代码文件都保存在沙盒中,比如图片、声音、属性列表,sqlite数据库和文本文件等。

2.获取沙盒路径

通过NSHomeDirectory()获取沙盒路径并输出

objective-c代码NSLog(@"%@",NSHomeDirectory());

swift代码print(NSHomeDirectory())

3.沙盒文件组成

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

沙盒根目录

Documents/

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

注意:在此目录下不要保存从网络上下载的文件,否则app无法上架!

获取Documents文件路径

NSSearchPathForDirectoriesInDomains 是用来查找文件路径的函数,其返回值是一个数组,这个数组中只有一个NSString类型元素,这个元素保存的就是查找的路径。

参数1: NSDocumentDirectory 表示需要查找的是Document文件夹

参数2:NSUserDomainMask 表示在用户的主目录中查找

参数3:YES 表示返回路径展开

objective-cNSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;

swiftlet path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last

Library/

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

Library目录

获取Library路径

objective-cNSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;

swiftlet path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last

Library/Caches/

此目录用来保存应用程序运行时生成的需要持久化的数据,这些数据一般存储体积比较大,又不是十分重要,比如网络请求数据等。这些数据需要用户负责删除。iTunes同步设备时不会备份该目录。

获取Library/Caches文件路径

objective-cNSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;

swiftlet path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last

Library/Preferences/

此目录保存应用程序的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录

在Preferences/下不能直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.

获取Library/Preferences/文件路径

objective-cNSString *path = NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES).lastObject;

swiftlet path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.preferencePanesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last

此方法获取路径是沙盒/Library/PreferencePanes,但并不存在这样的路径,想要访问Preferences文件夹,需要拼接路径。

objective-cNSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"Preferences"];

swiftlet path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last! + "/Preferences"

tmp/

此目录保存应用程序运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录

获取tmp文件路径

objective-cNSString *path = NSTemporaryDirectory();

swiftlet path = NSTemporaryDirectory()

如果有什么不同见解 或文章有什么错误希望大家能够指出

ios沙箱软件_iOS 开发之沙盒机制相关推荐

  1. iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

    iOS开发:沙盒机制以及利用沙盒存储字符串.数组.字典等数据 1.初识沙盒:(1).存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的.要想数据永久保存,将数据保存成文件,存储到程 ...

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

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

  3. ios沙箱软件_ios真机和模拟器沙盒文件(一)

    版本记录 版本号 时间 V1.0 2017.06.11 前言 我们有时候需要在沙盒中存储东西,所以总有需求就是查看沙盒文件里面存储的文件,这就需要我们查看沙盒文件,沙盒文件包括真机的沙盒文件和模拟器的 ...

  4. iOS 开发之沙盒机制 文件操作 (NSFielManager)

    原文链接:http://www.jianshu.com/p/349855b5a8ae iOS APP 可以在自己的沙盒里读写文件,但是,不可以访问其他 APP 的沙盒.每一个 APP 都是一个信息孤岛 ...

  5. iOS开发之沙盒机制(SandBox)

    iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件. ...

  6. macOS - Cocoa开发之沙盒机制及访问Sandbox之外的文件

    原文地址:http://www.skyfox.org/cocoa-macos-sandbox.html iOS默认并且只能读写对应的沙盒目录. OSX自从10.6系统开始引入沙盒机制,规定发布到Mac ...

  7. ios沙箱软件_iOS沙盒管理工具FHHSandBoxViewer

    KeyWord:沙盒文件递归遍历.Swift里的闭包多个weak修饰.iOS使用AirDrop 操作演示.gif 平时真机开发调试App的时候想查看沙盒具体内容一般做法是连接Xcode下载整个App的 ...

  8. ios沙箱软件_iOS app ipa 与 沙盒

    app沙盒 .app:存放程序源文件,上架前经过数字签名,上架后不可修改 Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在 ...

  9. ios沙箱软件_iOS沙盒获取

    屏幕快照 2017-04-11 上午11.08.53.png 1.获取沙盒中home目录(主目录,沙盒的最外层)的路径 NSString *homeDir = NSHomeDirectory(); N ...

最新文章

  1. 查询SDE数据库,GSON报错:declares mutiple JSON fields named data
  2. 哈尔滨工业大学-数据库系统(基本知识与关系模型3)
  3. 自动编译和提交脚本(结合svn和visual studio)
  4. 将替代ListView的RecyclerView 的使用(一)
  5. LSTM 和 GRU
  6. flask查询mysql数据展示_flask下直接展示mysql数据库 字段
  7. 好程序员大数据点睛:关于HDFS的二三事
  8. WinXp系统中没有ChangeWindowMessageFilter这个函数
  9. 常用idea快捷键大全
  10. 探讨【IGE】的源代码【一】。
  11. IAR软件ZigBee物联网
  12. html改变鼠标指针形状代码,鼠标指针形状效果大全 cursor
  13. atv320说明书_ATV320U30N4B 施耐德 ATV320通用变频器 说明书
  14. 腾讯云函数使用方法及注意事项
  15. (一)海康威视、大华、宇视、广州视鹰 摄像机,支持SDK二次开发
  16. Steam版XCOM: Enemy Within(内部敌人)不能启动的问题
  17. cherry键盘win键锁定的问题
  18. 手机扫二维码登录是怎么实现的?
  19. 教你如何用手机下载视频号[微信小程序]中的视频
  20. 云之讯php短信接口,菏泽java云之讯短信接口价格如何计算? 新锐信息科技服务至上...

热门文章

  1. c代码实现 ifft运算_月光软件站 - 编程文档 - 其他语言 - 时间抽选基2FFT及IFFT算法C语言实现...
  2. Chrome谷歌浏览器最小化和页面遮挡后JS代码不稳定和功能失效的解决思路
  3. 爱奇艺qsv格式转mp4最简单的方法,还有腾讯视频缓存合并转mp4,B站缓存合并 -没有之一
  4. 【n次归并操作】瑞士轮
  5. 科技攻关 成功构建出国产芯片区块链智能合约专用并行计算卡
  6. 51单片机控制数字时钟的显示及修改
  7. Q1.ESX不能联网
  8. 修改mysql初始密码时报错:ERROR 1064 (42000): You have an error in your SQL syntax
  9. 《Ce train qui s’en va 离站的火车》
  10. 面试官:一台服务器能建立的TCP链接真的只有65535个吗?