沙盒和NSBundle

作者: 渡边君WM | 来源:发表于2018-09-14 22:20 被阅读59次

    一、NSBundle目录和沙盒路径对比

    沙盒目录:

    /Users/mrwangxiansen/Library/Developer/CoreSimulator/Devices/A10128A9-D187-4E86-A1AF-43523AC2A4DE/data/Containers/Data/Application/B65FB2D7-C064-4750-AF18-3C4C50B6DAF6

    bundle目录:

    /Users/mrwangxiansen/Library/Developer/CoreSimulator/Devices/A10128A9-D187-4E86-A1AF-43523AC2A4DE/data/Containers/Bundle/Application/FC9EF00F-8A12-4E4B-908F-6C74F6E9BB96/CUSSenderExample.app

    上面两个路径加黑的路径是xcode的模拟器的containers路径,后面的部分分别是所有app的bundle文件的主目录和所有app的数据主目录。

    二、沙盒

    程序每次编译都会生成一个新的沙盒路径,之前生成的沙盒被删除。

    获取沙盒路径:

    NSString *path = NSHomeDirectory();

    Documents/:我们可以将应用程序的数据文件保存在该目录下。不过这些数据类型仅限于不可再生的数据,可再生的数据文件应该存放在Library/Cache目录下。该目录会被iTunes同步,可通过

    // 检索指定路径

    NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

     // 第一个参数指定了搜索的路径名称,NSDocumentDirectory表示是在Documents中寻找.NSCacheDirectory的话就是在cache文件中寻找

     // 第二个参数限定了文件的检索范围只在沙盒内部.其意义为用户电脑主目录.也可以修改为网络主机等.最后一个参数决定了是否展开波浪线符号.展开后才是完整路径,这个布尔值一直为YES.

    // NSSearchPathForDirectoriesInDomains返回值为一个数组,在iphone中由于只有一个唯一路径(相对OC而言),所以直接取数组第一个元素即可.

    获取到路径地址。

    Documents/Inbox:外部应用程序需要访问的文件保存在该目录下,例如系统的邮件 App 要使用到当前应用程序的附件资源就存放在这个目录。沙盒机制是不允许外部程序访问沙盒中的文件,因此苹果的解决方案是将文件拷贝一份到应用的 Documents/Inbox 目录下。该目录只读,不可修改,会被 iTunes 同步。

    Library/:存放默认设置或其它状态信息。除了 Caches 子目录外其他目录都会被 iTunes 同步。

    Library/Preferences:NSUserDefaults 写的设置数据都会保存到该目录下的一个 plist 文件中,会被 iTunes 同步。

    Library/Caches: iTunes 不会同步此文件夹,并且当系统空间不足的时候会被清理,适合存储体积大,不需要备份的非重要数据。可通过

    NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;

    获取到路径地址。

    tmp/:各种临时文件,保存应用再次启动时不需要的文件。而且,当应用不再需要这些文件时应该主动将其删除,因为该目录下的东西随时有可能被系统清理掉,目前已知的一种可能清理的原因是系统磁盘存储空间不足的时候。可通过

    NSString *tmpPath = NSTemporaryDirectory();

    获取到路径地址。

    三、NSBundle

    该目录包含了应用程序本身的数据,包括资源文件和可执行文件等。整个目录是只读的,并且不会被 iTunes 同步。可通过

    NSString *bundlePath = [[NSBundle mainBundle] bundlePath];

    获取到路径地址。

    相关文章

      网友评论

        本文标题:沙盒和NSBundle

        本文链接:https://www.haomeiwen.com/subject/tovagftx.html