zoukankan      html  css  js  c++  java
  • iOS沙盒目录简介、沙盒路径获取

    一、沙盒的意义

      出于安全的考虑,iOS系统的沙盒机制规定每个应用只能访问当前沙盒目录下面的文件。但是对于一些用户级别的数据,考虑到很多软件都需要使用其中的数据,用户可以通过对当前的软件授权,让当前的应用可以访问这类数据。但是这类数据只存在于苹果原生开发的应用中,比如相册、通讯录等等。

      沙盒中的根目录下的一级目录是固定的,这些目录有Bundle Container(MyApp.app)、DataContainer(Documents、Libray、Temp)、iCloud Container。作出规定的意义在于方便沟通,比如开发者将文件放置在不同的位置,iOS系统会根据之前约定好的规则作出恰当的操作。

    二、目录路径的意义规范以及使用场景

    1、MyApp.app

    (1)说明

    存放着应用程序本身的数据,包括资源文件和可执行文件等。整个目录只可读,不可更改。应用程序启动后,软件会根据需要从该目录中懒加载代码和资源到内存中。为了防止篡改里面的内容,应用在安装的时候会将该目录进行签名。在非越狱的情况下,该目录中的内容是无法更改的。在越狱设备上如果更改了目录内容,对应的签名就会被改变,这种情况下应用程序将无法启动。

    (2)iTunes同步

    该文件不会被iTunes同步。

    (3)路径获取

    [[NSBundle mainBundle] bundlePath]

    2、Documents

    (1)说明

    开发者可以将应用程序的数据文件保存在这个目录下。不过建议这里只保存不可再生的数据,可再生的数据应该存放在Library/Cache目录下。

    (2)iTunes同步

    该目录下的文件会被iTunes同步。

    (3)路径获取

    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]

    3、Documents/Inbox

    (1)说明

    这个目录是苹果后面在加上的。比如,QQ接受到一个word文件,通过调用WPS软件打开这个文件。这个过程和前提是这样的,首先WPS软件会像iOS系统注册能够打开的文件格式(比如word、pdf、excel等),然后QQ中打开文件时需要设置一个类似于“用其他软件开发”的按钮,调用系统的外部软件打开功能,这个功能界面中会出现WPS软件,当用户选择WPS后,iOS系统会将这个word文件复制一份到WPS的Documents/Inbox目录下,在让WPS打开。该目录只读不可修改。

    (2)iTunes同步

    该目录下的文件会被iTunes同步。

    (3)路径获取

    4、Library

    (1)说明

    苹果工程师建议在该目录下存放一些偏好设置或者一些状态信息。

    (2)iTunes同步

    除这个Library/Caches之外,Library下的其他文件会被iTunes同步。

    (3)路径获取

    [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]

    5、Library/Caches

    (1)说明

    这个目录下主要存放一些用户在使用软件过程中的缓存数据,前面说的Documents目录用来保存一些不可再生的数据,那么现在这个目录就用来保存那么可以再生的文件,比如网络请求的数据,但是为了用户使用软件的更加顺畅,开发者可以考虑将一些网络数据缓存起来。既然是缓存数据,开发者需要设置好缓存的一系列安排,比如清除缓存、缓存有效期的设置等等。

    (2)iTunes同步

    该目录下的数据不会被iTunes同步。

    (3)路径获取

    [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]

    6、Library/Preferences

    (1)说明

    程序的偏好设置文件。比如使用的NSUserDefaults就是将数据保存在该目录下的一个plist文件中。

    (2)iTunes同步

    该目录下的数据会被iTunes同步。

    (3)路径获取

    [NSUserDefaults standardUserDefaults]

    7、Temp

    (1)说明

    各种临时的文件,保存应用再次启动时就可以不需要的文件数据。并且开发者不需要这些文件的时候应该要主动将其删除掉,因为该目录下的文件随时可能被系统清理掉,比如当系统磁盘存储空间不足的时候,系统会自动清除这个目录下的文件。

    (2)iTunes同步

    该目录不会被iTunes同步。

    (3)路径获取

    NSTemporaryDirectory()

    三、其他

    1、沙盒主目录路径

    NSHomeDirectory()
  • 相关阅读:
    【故障处理】ORA-12162: TNS:net service name is incorrectly specified (转)
    android studio 编程中用到的快捷键
    java时间格式串
    android Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
    linux安装vmware
    x1c 2017 安装mint18的坑——grub2
    x1c2017 8G版 win linux的取舍纠结记录
    python的try finally (还真不简单)
    kafka+docker+python
    json文件不能有注释
  • 原文地址:https://www.cnblogs.com/cchHers/p/9724843.html
Copyright © 2011-2022 走看看