iOS应用沙盒
来源:互联网 发布:mac声音键 下面 禁止键 编辑:程序博客网 时间:2024/05/09 03:50
一. 应用沙盒
沙盒也叫沙箱,英文sandbox。iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),它是应用程序的存储空间,所有的非代码文件都保存在这个地方,应用只能读写自己文件系统目录里的文件,不能直接访问其他应用的文件系统目录。应用程序向外请求或接收数据都要通过权限检测,假如不符合条件的话,不会被放行。沙盒机制导致了应用程序之间的通讯障碍,但iOS8之后新开放了一种对几个固定系统区域的扩展机制Extension,它在一定程度上弥补了沙盒机制对应用间通信的限制。
Extension的出现,为用户提供了在其它应用中使用我们应用提供的服务的便捷方式,比如用户可以在Today的widgets中查看应用展示的简略信息,而不用再进到我们的应用中,这将是一种全新的用户体验;但是,extension的出现可能会减少用户启动应用的次数,同时还会增大开发者的工作量。
(一). 应该沙盒的结构
Documents(文档数据)
保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录Library(资源库)
Library下默认有两个文件夹,Caches文件夹和tmp文件夹a. Caches(缓存)
保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。该文件夹一般用于存储体积大、不需要备份的非重要数据b. Preferences(偏好设置)
保存应用的所有偏好设置,iOS的Settings(设置),应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录tmp(临时文件目录)
保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录。iPhone在重启时,会丢弃所有的tmp文件
(二). iTunes同步设备
关于iTunes的同步设备,有一条规律,体积大的文件夹iTunes不会备份,如:Caches和tmp文件夹;体积小的文件夹iTunes会备份,如:Documents和Preferences文件夹
(三). 打开应用沙盒
1.方法一
应用沙盒是在MAC的资源库(Library)目录下,资源库文件夹默认是隐藏的,要显示隐藏的资源库才能查看iPhone模拟器的应用沙盒
(1). 显示隐藏文件,需要在Mac终端输入下面的命令
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles YES
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles NO
输完以上命令,并按回车Enter键,退出终端,重新启动Finder就可以了
重启Finder:鼠标单击窗口左上角的苹果标志–>强制退出–>Finder–>重新启动
(2). 沙盒的路径
/Users/sjm/Library/Developer/CoreSimulator/Devices/B713CC38-F99C-4345-83B0-2AF9B61F661D/data/Containers/Data/Application/CE0A877D-DB8F-43C7-BFBB-97333406BFA3
注意:
这里使用的是MAC X 10.11.5,Xcode版本是Xcode7.2.1,不同的OS系统版本或Xcode版本路径名可能稍微有点差异,但是大体思路相同
sjm:Mac用户名
B713CC38-F99C-4345-83B0-2AF9B61F661D:iPhone6S的模拟器
CE0A877D-DB8F-43C7-BFBB-97333406BFA3:自己写的应用程序的沙盒目录
2.方法二
安装SimPholders应用程序,该应用可以轻松查看每一个应用程序的应用沙盒
(四). 使用沙盒机制的好处
安全:别的App无法修改你的程序或数据
保护隐私:别的App无法读取你的程序和数据
方便删除:因为一个App所有产生的内容都在自己的沙盒中,所以删除App只需要将沙盒删除就可以彻底删除程序
二. 获取路径
1. 沙盒路径
(1). NSHomeDirectory函数获取
NSString *homePath = NSHomeDirectory(); NSLog(@"%@",homePath);
(2). NSHomeDirectoryForUser函数获取
NSString *userName = NSUserName(); NSString *homePath = NSHomeDirectoryForUser(userName); NSLog(@"%@",homePath);
2. Documents路径
(1). 用沙盒根目录拼接
NSString *homePath = NSHomeDirectory(); // 不建议采用,因为新版本的操作系统可能会修改目录名 NSString *documentsPath = [homePath stringByAppendingPathComponent:@"Documents"]; NSLog(@"%@",documentsPath);
(2). NSSearchPathForDirectoriesInDomains函数获取
// NSDocumentDirectory:用户的主目录 // NSUserDomainMask:代表从用户文件夹下找 // YES:代表展开路径中的波浪字符“~” // 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素,用firstObject取第一个元素 NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject; NSLog(@"%@",documentsPath);
3. Tmp路径
(1). NSTemporaryDirectory函数获取
NSString *tmpPath = NSTemporaryDirectory(); NSLog(@"%@",tmpPath);
(2). 用沙盒根目录拼接
NSString *homePath = NSHomeDirectory(); // 不建议采用,因为新版本的操作系统可能会修改目录名 NSString *tmpPath = [homePath stringByAppendingPathComponent:@"tmp"]; NSLog(@"%@",tmpPath);
4. Library/Caches路径
(1). 用沙盒根目录拼接
(2). NSSearchPathForDirectoriesInDomains函数获取
NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject; NSLog(@"%@",cachesPath);
5. Library/Preference路径
(1). 用沙盒根目录拼接
(2). 偏好设置文件不需要获取全路径,通过NSUserDefaults类可以读写Preference目录下的偏好设置文件
- iOS应用沙盒
- iOS应用沙盒
- ios沙盒的应用
- IOS 应用沙盒结构分析
- iOS应用沙盒机制浅析
- iOS 应用程序沙盒的应用
- iOS 【应用沙盒路径获取方式】
- iOS沙盒应用的一些事情
- iOS应用的沙盒目录结构
- iOS 应用沙盒机制与文件操作
- IOS应用沙盒机制与文件操作
- ios应用数据存储的常用方式与沙盒
- iOS模拟器的应用沙盒在MAC中的位置
- iOS 应用沙盒目录的常见获取方式
- 【iOS应用沙盒】——iOS沙盒路径的查看和使用
- IOS应用
- 【iOS】iOS数据存储,应用沙盒,XML,Preference,NSKeyedArchiver归档,SQLite3
- iOS-iOS应用提交
- 企业库是如何调用存储过程的
- iOS新升级,Xcode运行报错Could not find developer disk image
- 用LaTex制作幻灯片(slide)
- JQuery之内置函数响应事件
- Dinic算法实现二分图匹配
- iOS应用沙盒
- jvm垃圾回收算法
- JCLI诞生记(一)
- 快速搭建django环境
- 11 PopupMenu菜单和代码例子
- JAVA基础 date
- 《C++ Prime Plus》学习总结
- FOJ Problem 1004 Number Triangle
- Android之自定义最简单的竖向引导页