美文网首页
学习笔记-应用的沙盒

学习笔记-应用的沙盒

作者: Mystical | 来源:发表于2017-02-12 11:19 被阅读38次

    在iOS设备中,APP的数据存储采用了SandBox(沙盒)机制。


    应用的沙盒

    目录结构

    每个iOS应用都有自己应用的沙盒,沙盒的目录结构如下图所示:

    目录结构.png

    应用的沙盒下共有三个文件夹:Documents、Library、tmp,Library文件夹下有两个子文件夹:Caches、Preferences。

    目录分析:

    • Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。应用开启iTunes文件分享后,用户可在iTunes中看到该文件夹下内容,还可以更新该文件夹中文件。

    应用程序启用iTunes文件分享功能:Info.plist文件添加如图键值:


    文件分享键值添加.png
    • Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据,例如:缓存数据
    • Library/Preferences:存储应用程序偏好设置的plist文件,NSUserDefaults存储的内容在该目录下。
    • tmp:存储临时文件,在不需要这些文件时,应用要负责删除tmp中文件,以免占用文件系统的空间。

    目录获取

    • 根目录:
    NSString *home = NSHomeDirectory();
    
    • Documents目录:
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    // NSDocumentDirectory 表明正在查找Documents目录的路径
    // NSUserDomainMask 表明搜索限制在应用的沙盒内
    NSString *documentPath = paths[0];
    // 每个应用只有一个Documents目录,因此只有一个目录符合条件
    
    • Library/Caches目录:
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *documentPath = paths[0];
    
    • Library/Preferences目录:使用NSUserDefaults直接存储到该目录下
    • tmp目录:
    NSString *tmpPath = NSTemporaryDirectory();
    

    相关文章

      网友评论

          本文标题:学习笔记-应用的沙盒

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