iOS 应用沙盒

作者: iOS_成才录 | 来源:发表于2015-11-12 19:27 被阅读1797次

一、简介

  • 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。
    • 应用必须待在自己的沙盒里,其他应用不能访问该沙盒

二、应用沙盒目录

  • Application应用程序包:包含了所有的资源文件和和可执行文件,上架前经过数字签名,上架后不可修改

  • Documents:保存应用程序本身运行时产生的文件或者数据,iCloud备份目录,例如:游戏进度、涂鸦软件的绘图

    • 注意点:不要保存从网络上下载的文件,否则会无法上架!
  • Library

    • Caches:存放体积大又不需要备份的数据
      • 保存临时文件,"后续需要使用",例如:缓存图片,离线数据(地图数据)
      • 系统不会清理 cache 目录中的文件
      • 就要求程序开发时,"必须提供 cache 目录的清理解决方案"
    • Preference:保存应用的所有偏好设置,iCloud会备份设置信息
      • 用户偏好,使用 NSUserDefault 直接读写!
      • 如果要想数据及时写入磁盘,还需要调用一个同步方法
  • tmp:存放临时文件,不会被备份,而且这个文件下的数据有可能随时被清除的可能

    • 保存临时文件,"后续不需要使用"
    • tmp 目录中的文件,系统会自动清理
    • 重新启动手机,tmp 目录会被清空
    • 系统磁盘空间不足时,系统也会自动清理

三、应用沙盒目录的常见获取方式

**1、沙盒根目录 **

 NSString*home = NSHomeDirectory();

2、Documents目录 2种方式

  • 1.利用沙盒根目录拼接”Documents”字符串
    • 注意:不建议采用,因为新版本的操作系统可能会修改目录名
NSString*home = NSHomeDirectory();
NSString*documents =[home stringByAppendingPathComponent:@"Documents"];
  • 2.利用NSSearchPathForDirectoriesInDomains函数
// NSUserDomainMask 代表从用户文件夹下找
// YES 代表展开路径中的波浪字符“~”
NSArray*array =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
// 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素
NSString*documents =[array objectAtIndex:0];

3、tmp临时目录

NSString *tmp = NSTemporaryDirectory();

4、Library/Caches 目录

  • 方式一:利用沙盒根目录拼接”Caches”字符串

  • 方式二:利用NSSearchPathForDirectoriesInDomains函数(将函数的第2个参数改为:NSCachesDirectory即可)

NSString*documents =[[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, NO) objectAtIndex:0]];


> **5、Library/Preference 偏好设置**

+ 通过NSUserDefaults类存取该目录下的设置信息

# 四、分类抽取,快速方法沙盒中的文件夹
+ 1、 NSString分类抽取

```objc

// 1、.h文件

#import <Foundation/Foundation.h>

@interface NSString (JP)

// 用于生成文件在caches目录中的路径
- (instancetype)cacheDir;
// 用于生成文件在document目录中的路径
- (instancetype)docDir;
// 用于生成文件在tmp目录中的路径
- (instancetype)tmpDir;

@end

// 2. .m实现文件

#import "NSString+JP.h"

@implementation NSString (JP)

- (instancetype)cacheDir
{
 // 1.获取caches目录
 NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
 // 2.生成绝对路径
 return [path stringByAppendingPathComponent:[self lastPathComponent]];
}

- (instancetype)docDir
{
 NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
 return [path stringByAppendingPathComponent:[self lastPathComponent]];
}

- (instancetype)tmpDir
{
 NSString *path = NSTemporaryDirectory();
 return [path stringByAppendingPathComponent:[self lastPathComponent]];
}
@end

  • 2、使用抽取分类:如:获取caches文件夹下的abc.png图片
NSString *filePath = [@"abc.png" cacheDir];

相关文章

  • iOS 数据持久化知识汇总(1)—————存储路径

    一、沙盒和沙盒存储路径 1、沙盒是什么 iOS 每个iOS应用都有自己的应用沙盒,应用沙盒就是文件系统目录 。所...

  • 使用沙盒的正确姿势

    在学习iOS存储方法之前,先了解一下iOS存储机制——沙盒应用沙盒机制:每个iOS应用都有自己的应用沙盒(文件系统...

  • 沙盒

    一、iOS沙盒机制介绍(1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 ...

  • iOS数据存取

    iOS应用数据存取的常用方式 1.应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文...

  • iOS本地数据存取,看这里就够了

    iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文...

  • iOS读写json文件

    一.获取沙盒路径 每个iOS应用都有自己专属的应用沙盒,应用沙盒就是文件系统中的目录。但是iOS系统会将每个应用的...

  • 05-iOS数据存储

    一、iOS沙盒机制 iOS的每个应用都有属于自己的存储空间,即沙盒应用只能访问自己的沙盒,不可访问其他区域。 沙盒...

  • iOS的永久话储存

    沙盒:IOS应用中每个应用均有自己沙盒,用来储存APP自己的数据,每个应用的沙盒均是应用特有的不能交叉访问。 沙盒...

  • iOS本地数据存取

    应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒...

  • iOS--沙盒

    认识沙盒 何为沙盒?沙盒装什么?沙盒:系统为iOS应用创建的非此应用不可读写的文件夹,每个iOS应用都有一个和它一...

网友评论

  • 283a9b31f275:误人子弟了哥们,好好看看官方文档,英语不好别乱翻译,同时也自己多实践别拿来主义。好好看看caches目录的介绍:
    Put data cache files in the Library/Caches/ directory. Cache data can be used for any data that needs to persist longer than temporary data, but not as long as a support file. Generally speaking, the application does not require cache data to operate properly, but it can use cache data to improve performance. Examples of cache data include (but are not limited to) database cache files and transient, downloadable content. Note that the system may delete the Caches/ directory to free up disk space, so your app must be able to re-create or download these files as needed.

本文标题:iOS 应用沙盒

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