iOS 应用沙盒机制就是指 iOS 应用程序只能在为该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。(ios8之前是这个样子,iOS8新开放了一种对几个固定系统区域的扩展机制 extension,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制)。应用沙盒机制下,每个应用程序都有自己的存储空间 ;应用程序不能翻过自己的围墙去访问别的存储空间的内容 ;应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。

应用的沙盒结构如图:

应用沙盒一般包括以下几个文件目录:应用程序包、Documents、Libaray(Caches/Preferences)、tmp。

 
1、Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录。
 
2、Libaray/Caches:保存运行时产生的缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除。一般存放体积比较大,不是特别重要的资源。
 
3、Libaray/Preferences:保存应用的所有偏好设置,iOS 的 Settings(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。
 
4、tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用退出后,系统会清除该目录下的文件,iTunes不会同步该目录。
 
 
iOS路径获取方式:
项目中,为了方便我们开发方便,可以创建一个专门管理路径的类,示例:
// .h
/** 路径管理者 */
@interface BDPathManager : NSObject /**
* 获取沙盒Document的文件目录
*
* @return 返回目录
*/
+ (NSString *)getDocumentDirectory; /**
* 获取沙盒Library的文件目录
*
* @return 返回目录
*/
+ (NSString *)getLibraryDirectory; /**
* 获取沙盒Library/Caches的文件目录
*
* @return 返回目录
*/
+ (NSString *)getCachesDirectory; /**
* 获取沙盒Preference的文件目录
*
* @return 返回目录
*/
+ (NSString *)getPreferencePanesDirectory; /**
* 获取沙盒tmp的文件目录
*
* @return 返回目录
*/
+ (NSString *)getTempDirectory;
// .m
@implementation BDPathManager + (NSString *)getDocumentDirectory{
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
} + (NSString *)getLibraryDirectory{
return [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
} + (NSString *)getCachesDirectory{
return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
} + (NSString *)getPreferencePanesDirectory{
return [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject];
} + (NSString *)getTempDirectory{
return NSTemporaryDirectory();
}
@end

方便快速获得需要的路径!

苹果提供的函数:
/**
* @brief 创建一个目录搜索路径列表
*
* @param directory 文件类型(不同枚举值获取不同文件的路径)。
* @param domainMask 一般为 NSUserDomainMask,表示在用户文件夹下查找。
* @param expandTilde 一般为YES(NO,获取不到路径,而是在前面加了~)
*
* @return 返回存放路径的数组
*/
NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);

沙盒(SandBox)的更多相关文章

  1. 沙盒SandBox

    每个App都有自己的沙盒,也就是一个存储空间.App之间没有权限访问对方的沙盒资源.沙盒的目录下有三个文件夹:Documents.Library.temp 目录结构 Documents:用于存储用户数 ...

  2. IOS学习之IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...

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

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

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

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

  5. IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作   作者:totogo2010 ,发布于2012-9-21,来源:CSDN   目录: IOS学习之IOS沙盒(sandbox)机制和文件操作( ...

  6. IOS 学习之 iOS沙盒(sandbox) 介绍 沙盒机制 文件操作(一)

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

  7. 数据存储--沙盒sandBox

    默认情况下,每个沙盒必含有3个文件夹:Documents, Library 和 tmp 一.沙盒(sandbox)出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上.当应用程序被 ...

  8. iOS 沙盒(sandbox)机制和文件操作

    本文参看了 http://www.uml.org.cn/mobiledev/201209211.asp#1 这篇文章中的介绍,尊重原著. 1.IOS沙盒机制 IOS应用程序只能在本应用程序中创建的文件 ...

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

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

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

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

随机推荐

  1. 约数和问题 (codevs2606 && 洛谷2424)

    P2424 约数和 题目背景 Smart最近沉迷于对约数的研究中. 题目描述 对于一个数X,函数f(X)表示X所有约数的和.例如:f(6)=1+2+3+6=12.对于一个X,Smart可以很快的算出f ...

  2. [Xcode 实际操作]七、文件与数据-(9)编码创建Plist文件(属性列表文件)

    目录:[Swift]Xcode实际操作 本文将演示如何通过编码的方式,创建属性列表文件. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit ...

  3. Spring IOC 的源码分析

    刚学习Spring的时候,印象最深的就是 DispatcherServlet,所谓的中央调度器,我也尝试从这个万能胶这里找到入口 configureAndRefreshWebApplicationCo ...

  4. Maven打包Spark程序Pom配置

    scala和java混合的spark程序之前使用其他配置始终有报找不到包的情况,尝试了一下如下配置可以打包成功.<build> <pluginManagement> <p ...

  5. 【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)

    常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...

  6. 题解 poj3585 Accumulation Degree (树形dp)(二次扫描和换根法)

    写一篇题解,以纪念调了一个小时的经历(就是因为边的数组没有乘2 phhhh QAQ) 题目 题目大意:找一个点使得从这个点出发作为源点,流出的流量最大,输出这个最大的流量. 以这道题来介绍二次扫描和换 ...

  7. hdu6070Dirt Ratio 多校题 套路二分

    比赛中我看了一眼题目就觉得是二分的套路,跟miaom说,结果发现miaom开始碎觉 miaom醒来以后表示这是道凸包合并(%%%) 我&wzf2000:那您快写啊 miaom:我不会写啊 莫名 ...

  8. 实例/静态工厂方法得到bean

    <bean id="a" class="com.yundaex.wms.config.TestBeanChild" /> <bean id=& ...

  9. SpringBoot---核心---基本配置

    1.[入口类和@SpringBootApplication注解] 2.[关闭特定的配置] 3.[定制Banner] 1.1 修改Banner 1.2 关闭Banner 4.SpringBoot配置文件

  10. notepad++添加到运行

    1. 点击开始,输入regedit,点击回车2.在注册表中找到 HKEY_CLASSES_ROOT 下面的 Applications3.修改注册表 1).在Applications下面找到对应的程序名 ...