首页 > 代码库 > IOS-沙盒机制(一 简述)

IOS-沙盒机制(一 简述)

一 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对应用程序执行各种操作的权限限制。
      
                                                     

二  模拟器中的沙盒

      下面看看模拟器的沙盒文件夹在mac电脑上的什么位置。沙盒文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,其实就是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—>
  现在能看到资源库文件夹了
                                                   
打开资源库后找到/Application Support/iPhone Simulator/文件夹。这里面就是模拟器的各个程序的沙盒目录了。
        

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


                

三 目录结构

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

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

下图是上面提到的三个目录 :Documents、Library、 tmp、XXX.app
                      

下图是一个完整家目录的结构:

          


         下一节会详细介绍沙盒中各个目录的作用及其访问使用代码。

参考:
https://developer.apple.com/library/ios/DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheiOSEnvironment/TheiOSEnvironment.html