iOS应用程序沙箱

大家都知道,iOS的应用之间是不能通过文件来进行数据交互的,因为应用程序与文件系统的交互被限制在应用沙箱中。在安装一个新应用的时候,安装器会为应用创建一个home目录,将应用程序放在这个目录下,除此之外,还会创建一些其他的关键目录。这些目录组成了应用主要的文件系统。如下如所示:


由于应用程序是在沙箱中,所以应用程序是不能访问沙箱以外的任何文件的。当然也有例外,例如使用公共的系统接口来访问如用户通讯录或音乐的时候。这种情况下,系统框架就可以读取或者修改跟操作相关的任何数据存储文件。

iOS标准目录

为了安全起见,一个iOS应用只能在有限的地方写入数据。当应用被安装到设备上的时候,安装器会为应用创建 一个home目录。这个目录就是该应用的整个宇宙了,在这个目录里包含了这个应用能够直接访问的所有东西。

<Application_Home>/AppName.app

这是一个包含应用本身的簇(bundle)目录。千万不要向这个目录中写入任何东西。为了防止篡改,簇目录在安装的时候被签名了。向这个目录写入东西将导致签名的修改,应用也将不能再启动。

在iOS2.2以及以后的版本中,iTunes将不会再备份这个目录中的内容。然后,iTunes会与app store中购买的应用执行一个初始同步。

<Application_Home>/Documents/

使用这个目录来保存重要的用户文档和应用数据文件。重要的数据包括任何不能被应用重新创建的文件,例如用户生成的内容。

这个目录中的内容可以用来作为用户的文件共享。此目录中的内容会被iTunes备份。

<Application_Home>/Documents/Inbox

这个目录是用来访问被外部实体要求你的应用打开的文件。具体说来就是,邮件程序将与你的应用相关的邮件附件放在这个目录;文档交互控制器也会将文件放在这里。

应用可以读取和删除这个目录下的文件,但是不能创建新文件或者修改原来的文件。如果用户试图修改这个目录下的文件,应用需要将在修改之前将这里的文件移动到别的目录。

此目录下的文件也会被iTunes备份。

<Application_Home>/Library/

对于非用户数据文件,这个就是顶级目录了。当你不想将数据暴露给用户的时候,你可以将文件保存在这个目录下的任何子目录下,或者也可以创建自己的子目录。不提倡在这个目录下放用户数据文件。

这个目录下的文件(Caches目录除外)的文件会被iTunes备份。

<Application_Home>/tmp/

在两次启动应用之间不需要保留的文件可以放在这个目录下。当应用检测到不再使用的文件时,应该将其删除。当应用没有在运行时,系统也可能会清除这里没用的文件。

在iOS2.1之后,这里的文件不会被备份。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值