iOS/iPhone 程序文件目录结构以及启动流程

         要想清晰的理解IOS应用程序的启动过程,毫无疑问需要深入了解一下ios应用程序的文件系统。一个ios应用程序都有一个属于自己沙盒(sandbox),应用沙盒就是文件系统目录,并且与文件系统的其他部分隔离。应用必须待在自己的沙盒里,应用既不能访问其他应用的沙盒,其他应用也不能访问该沙盒。

         应用沙盒包含多个目录:

         1.应用程序包(application bundle):包含所有的资源文件和可执行文件,并且是只读文件目录。

         注意:每个应用程序可以有多个程序包,但是只能有一个主程序包,即包含应用程序代码的程序包。当用户启动应用程序的时候,应用程序会在主程序包中寻找即刻要用到的代码和资源,并将其加载到内存。然后它可以根据需要动态(并延时)加载主程序包或者丛属程序包中的代码和资源。应用程序可以用NSBundle 和Core Foundation 的CFBundleRef(在过程化的语言中使用)定位程序包中的资源。在Objective-C中,首先要获得一个NSBundle实例,它和某个物理程序包对应。如需获得应用程序主程序包,则应调用mainBundle类方法。然后调用NSBundle的其他方法,传入文件名、扩展名以及(可选)程序包子目录,这些方法将会返回程序包资源的路径。有了资源路径,您就可以使用恰当的类将其加载到内存。代码案例有:

NSString *str=[[NSBundle mainBundle]pathForResource:@"example" ofType:@"png"];
即可返回应用程序包中保含的example.png文件的路径。你可以使用str来对 example.png进行操作。

         2.偏好设置文件(Library/Preferences/):存放所有的偏好设置。通过NSUserDefaults类可以读取写入该文件,同时可以作为应用的默认启动设置,即应用的setting会在该目录中查找应用的设置信息。

         3.临时文件(tmp/):用于保存程序运行时所需的临时数据,使用完毕后的临时数据对应的文件将从该目录下删除。同时,应用结束时也可能会清除该目录下的文件。在程序运行时可以通过方法NSTemporaryDirectory可以的得到该沙盒下tmp目录的全路径。

         4.应用运行时保留的数据(Documents/):保存应用运行时生成的需要保留的数据。该文件对于在设备发生故障时,通过ituns同步设备备份该目录,从而可以恢复应用的数据。

         5.保存应用运行时生成的需要保留的数据(Library/Caches):与4的不同之处时ituns同步不能备份该目录。因为该缓存数据的体积比较大,会延长同步设备所需的时间。但是如果数据源在别处(例如,网络的服务器),那么可以通过将数据保存在该目录。当用户需要恢复设备,可以从服务器下载这些数据。

          可以总结一下,Library/Preferences/、Documents/ 下的文件时可以通过iTuns同步设备时进行备份目录,而tmp/、Documents/是不能备份的。用表格表示如下:

目录

描述

<Application_Home>/AppName.app

这是程序包目录&#

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值