iOS沙盒篇

作者: 安静守护你 | 来源:发表于2018-07-02 14:24 被阅读3次

iOS系统在安全性上的一大亮点就是沙盒

每个iOS应用SDK都被限制在沙盒中,我们可以把沙盒当成一个设置了仅当前SDK可以访问的文件夹,苹果对沙盒有以下几条限制:

  1. 应用程序可以在自己的沙盒中运行,但不能访问任何其他应用程序的沙盒。
  2. 应用程序间不能共享数据。
  3. 禁止应用程序读写沙盒以外的文件夹。
  4. 沙盒根目录中有四个文件夹:
    AppName.app
    Documents
    Library
    tmp
  5. iTunes在与iPhone同步时,备份所有的Documents和Library文件。
  6. iPhone在重启时,丢弃所有的tmp文件。
一、以下从存放内容、是否会被iTunes同步两个方面来分别描述沙盒中四个文件夹的功能情况:

1. AppName.app

①存放内容

这是应用程序的程序包目录,包含了应用程序本身的数据、资源文件、可执行文件等等。程序启动以后,会根据需要从该目录中动态的加载代码或者资源到内存(懒加载:lazy loading)。

注意:AppName.app目录是只读的。为了防止被篡改,应用在安装的时候会将该目录签名。非越狱情况下,该目录中的内容是无法更改的;如果更改了目录内容,对应的签名就会发生改变,会导致应用程序无法启动。

②是否会被iTunes同步

2. Documents

①存放内容

我们可以将应用程序的数据文件保存在该目录下。不过这些数据类型仅限于不可再生的数据,可再生的数据文件应该存放在Library/Cache目录下

②是否会被iTunes同步

3. Documents/Inbox

①存放内容

该目录用来保存由外部应用请求当前应用程序打开的文件。

比如:应用A向系统注册了几种可打开的文件格式,应用B中有一个A支持的格式的文件F,并申请调用应用A打开文件F。由于F当前是在应用B的沙盒中,我们知道,沙盒机制使不允许应用A访问应用B沙盒中的文件,因此苹果的解决方案是将文件F拷贝一份到应用A的Documents/Inbox目录下,再让应用A打开文件F。

②是否会被iTunes同步

4. Library

①存放内容

苹果建议用来存放默认设置或者其他状态信息。

②是否会被iTunes同步

是,但除了Caches子目录

5. Library/Caches

①存放内容

主要是缓存文件,用户使用过程中缓存都可以保存在这个目录中。上面提到过,Documents目录用于保存不可再生的文件,那么这个目录就用于保存那些可再生的文件,比如网络请求数据。鉴于此,应用程序通常还需要负责删除这些文件。

②是否会被iTunes同步

6. Library/Preferences

①存放内容

应用程序的偏好设置文件。我们使用NSUserDefaults的设置数据都会保存到该目录下的一个plist文件中。

②是否会被iTunes同步

7. tmp

①存放内容

主要存放各种临时文件,保存应用再次启动时不需要的文件。而且,当应用不再需要这些文件时应该主动将其删除,因为该目录下的东西随时有可能被系统清理掉,目前已知的一种可能清理的原因是系统磁盘存储空间不足的时候。

②是否会被iTunes同步

二、获取沙盒路径

1. 获取沙盒主目录路径

NSString *homePath = NSHomeDirectory();

2. 获取Documents路径

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

3. 获取Library路径

NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];

4. 获取Caches路径

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

5. 获取tmp路径

NSString *tmpDir = NSTemporaryDirectory();

相关文章

  • iOS 系统相关复习

    沙盒 iOS沙盒详细介绍iOS沙盒篇 沙盒机制介绍 iOS中的沙盒机制是一种安全体系。为了保证系统安全,iOS每个...

  • iOS 数据持久化知识汇总(1)—————存储路径

    一、沙盒和沙盒存储路径 1、沙盒是什么 iOS 每个iOS应用都有自己的应用沙盒,应用沙盒就是文件系统目录 。所...

  • 05-iOS数据存储

    一、iOS沙盒机制 iOS的每个应用都有属于自己的存储空间,即沙盒应用只能访问自己的沙盒,不可访问其他区域。 沙盒...

  • iOS沙盒篇

    iOS系统在安全性上的一大亮点就是沙盒。 每个iOS应用SDK都被限制在沙盒中,我们可以把沙盒当成一个设置了仅当前...

  • 使用沙盒的正确姿势

    在学习iOS存储方法之前,先了解一下iOS存储机制——沙盒应用沙盒机制:每个iOS应用都有自己的应用沙盒(文件系统...

  • Objective-C沙盒结构

    导读: 一、什么是沙盒机制二、沙盒的特点三、沙盒的结构组成四、获取沙盒目录路径 一、什么是沙盒机制 iOS中的沙盒...

  • iOS 沙盒

    沙盒机制:在iOS中每个APP都拥有自己的沙盒,APP只能访问对应沙盒中存储的数据, iOS是不允许跨越沙盒去访问...

  • OC - 沙盒

    导读: 一、什么是沙盒机制 二、沙盒的特点 三、沙盒的结构组成 四、获取沙盒目录路径 一、什么是沙盒机制 iOS中...

  • 沙盒

    一、iOS沙盒机制介绍(1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 ...

  • iOS本地数据存取,看这里就够了

    iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文...

网友评论

    本文标题:iOS沙盒篇

    本文链接:https://www.haomeiwen.com/subject/ehepyftx.html