iOS app 沙盒

iOS app 沙盒_第1张图片
ios_app_layout_2x.png
  • Application:存放程序源文件,上架前经过数字签名,上架后不可修改
  • Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录
    获取路径方法
    NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES)firstObject];
  • tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。在iPhone重启时,该目录下单文件会被删除。iTunes同步设备时不会备份该目录
    NSString *tmp = NSTemporaryDirectory();
  • Library包含两部分
    获取路径方法:
    NSString *library = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, 1, YES)firstObject];
    • Caches:保存那些可再生文件,如网络请求数据(图片,音频,视频,)鉴于此,应用程序最好还是负责删除这些文件,不会被iTunes同步
      NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, 1, YES)firstObject];
    • Preferences:保存应用的所有偏好设置,iOS的Settings(设置)会在该目录中查找应用的设置信息。用NSUserDefaults存储的用户数据都会被保存在该目录下的文件中.iTunes同步设备时会备份该目录
//注意:通常情况下,Preferences是有系统进行维护,我们很少进行操作 
NSString *Preferences = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)firstObject]; 
//stringByAppendingString:将路径与字符串连接在一起拼接为完整路径 
NSString *preferencesPath = [Preferences stringByAppendingString:@"/Preferences"];

具体可以查看Mac下iPhone Simulator下的app沙盒,地址如下

Xcode 5及之前
/Users/YourName/Library/Application Support/iPhone Simulator/
Xcode 6及以后
/Users/YourName/Library/Developer/CoreSimulator/Devices/模拟器标识

关于bundle的补充

  1. bundle是一种特定的文件类型,一个主要作用是 获取Resources文件夹中的资源。 bundle是一个目录,其中包含了程序会使用到的资源。这些资源包含了如图像、声音、编译好的代码、nib文件等。
  2. 对应bundle,cocoa提供了类NSBundle。我们的程序是一个bundle。在Finder中,一个应用程序看上去和其他文件没有什么区别,但是实际上它是一个包含了nib文件、编译代码、以及其他资源的目录。我们把这个目录叫做程序的main bundle。
  3. [NSBundle mainBundle]是获得NSBundle的一个单例对象,该单例对象 已经设置了默认的resourcePath,也就是你的app打包后的路径,[NSBundle mainBundle]resourcePath]就是获得这个完整的打包后的app路径

你可能感兴趣的:(iOS app 沙盒)