一 IOS沙盒机制

      出于安全的目的,应用程序仅仅能将自己的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其创建一个家文件夹,这个家文件夹就是应用程序的沙盒。所以的文件都要保存在此,比如图像,图标,声音,映像,属性列表,文本文件等。(For
security reasons, iOS places each app (including its preferences and data) in a sandbox at install time. A sandbox is a set of fine-grained controls that limit the app’s access to files, preferences, network resources, hardware, and so on. As part of the sandboxing
process, the system installs each app in its own sandbox directory, which acts as the home for the app and its data.)

     1、每一个应用程序都有自己的存储空间
     2、应用程序不能翻过自己的围墙去訪问别的存储空间的内容
     3、应用程序请求的数据都要通过权限检測,假如不符合条件的话,不会被放行。
     
       sandbox是一种安全体系,应用程序的全部操作都要通过这个体系来运行,当中核心内容是:sandbox相应用程序运行各种操作的权限限制。
      
                                                     IOS-沙盒机制(一 简述)-LMLPHP

二  模拟器中的沙盒

以下看看模拟器的沙盒目录在mac电脑上的什么位置。沙盒文件都在个人username目录下的一个隐藏目录里,中文叫资源库,事实上就是Library。查看方法:

方法1  能够设置显示隐藏文件,然后在Finder下直接打开。设置查看隐藏文件的方法例如以下:打开终端,输入命令

     显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
输完单击Enter键,退出终端,又一次启动Finder就能够了
      重新启动Finder:鼠标单击窗体左上角的苹果标志-->强制退出-->Finder—>
  如今能看到资源库目录了
                                                   IOS-沙盒机制(一 简述)-LMLPHP
打开资源库后找到/Application Support/iPhone Simulator/文件夹。这里面就是模拟器的各个程序的沙盒文件夹了。
        IOS-沙盒机制(一 简述)-LMLPHP

方法2  这样的方法更方便,在Finder上点->前往->前往目录,输入/Users/username/Library/Application Support/iPhone Simulator/  前往。username这里写你的用户名。或者为 ~/Library/Application
Support/iPhone Simulator/   (~表示当前用户文件夹)


                IOS-沙盒机制(一 简述)-LMLPHP

三 文件夹结构

         默认情况下,每一个沙盒含有3个文件夹:Documents, Library 和 tmp。由于沙盒机制,应用仅仅能在这几个文件夹下读写文件Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该文件夹下,iTunes备份和恢复的时候会包含此文件夹。


Library:存储程序的默认设置或其他状态信息;
Library/Caches:存放缓存文件,iTunes不会备份此文件夹,此文件夹下文件不会在应用退出删除
tmp:提供一个即时创建暂时文件的地方。
iTunes在与iPhone同步时,备份全部的Documents和Library文件。iPhone在重新启动时,会丢弃全部的tmp文件。

下图是上面提到的三个文件夹 :Documents、Library、 tmp、XXX.app
                      IOS-沙盒机制(一 简述)-LMLPHP

下图是一个完整家文件夹的结构:

          IOS-沙盒机制(一 简述)-LMLPHP


下一节会具体介绍沙盒中各个文件夹的作用及其訪问使用代码。

參考:

04-14 22:57