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. [Xcode 实际操作]五、使用表格-(10)插入UITableView单元格

    目录:[Swift]Xcode实际操作 本文将演示如何插入一行单元格. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加两个协 ...

  2. python3编程技巧二——如何在列表、字典、集合 中根据条件筛选数据

    一.列表筛选数据 # coding=utf-8 from random import randint # 创建随机列表 l = [randint(-10, 10) for i in range(10) ...

  3. html表格合并单元格的运用实例

    效果图: 实现代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><ti ...

  4. Theme Section

    题目链接 #include <cstdio> #include <iostream> #include <cstring> using namespace std; ...

  5. 《SQL 进阶教程》 case:将已有编号方式转换为新的方式并统计

    SQL 权威指南SQL 解惑在进行非定制化统计时,需要将已有编号方式转换为另外一种便于分析的方式进行统计需求 select case when name='哈尔滨' then '黑龙江' when n ...

  6. luogu P2731 骑马修栅栏 Riding the Fences

    入度为奇数的点,搜他. 最好邻接矩阵... #include<cstdio> #include<iostream> #define R register int using n ...

  7. [HNOI2010] 弾飞绵羊

    题目链接: 传送门 题目分析: 题外话: 我即使是死了,钉在棺材里了,也要在墓里,用这腐朽的声带喊出: 根号算法牛逼!!! 显然,这是一道LCT裸题,然而在下并不会LCT于是采用了分块瞎搞 对于每个点 ...

  8. SPI接口的ETH芯片(ENC28J60/W5500)

    一 ENC28J60:SPI接口.中断.复位.LED指示.可参看野火相应教程.简单的在单片机中实现网页服务器是参考AVRNET项目,复杂的是用LWIP协议栈.telnet用于用PC的TELNET可以远 ...

  9. POJ 3735 Training little cats 矩阵快速幂

    http://poj.org/problem?id=3735 给定一串操作,要这个操作连续执行m次后,最后剩下的值. 记矩阵T为一次操作后的值,那么T^m就是执行m次的值了.(其实这个还不太理解,但是 ...

  10. 传智播客C++

    轻松入门实战应用传智播客C++学院就业班第一阶段C提高课程 传智播客C提高讲义 传智扫地僧 1程序内存模型 1.1就业班引言 1.1.1问题引出 企业需要能干活的人  C学到什么程度可以找工作  ...