IOS 沙盒机制 浅析

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。

1.每个应用程序都在自己的沙盒内(提示:在IOS8中已经开放访问)

2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容

3.应用程序向外请求或接收数据都需要经过权限认证

//获取home目录
    NSString *homePath = NSHomeDirectory();
    NSLog(@"home%@",homePath);

    //获取documents目录
    //方式1:
    NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsPath = [documents lastObject];
    NSLog(@"%@",documentsPath);
    //方式2:拼接字符串
    NSString *documentPath2 = [homePath stringByAppendingPathComponent:@"Documents"];
    NSLog(@"documenPath2:%@",documentPath2);

    //获取caches缓存目录
    NSArray *caches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachesPath = [caches lastObject];
    NSLog(@"cachesPath:%@",cachesPath);

    //获取临时目录
    NSString *tmp = NSTemporaryDirectory();
    NSLog(@"tmp:%@",tmp);

    //在documents目录下创建文件
    NSFileManager *fm = [NSFileManager defaultManager];
    NSString *fileName = [documentsPath stringByAppendingPathComponent:@"1.txt"];
    NSString *str = @"hello world";
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    if ([fm createFileAtPath:fileName contents:data attributes:nil]) {
        NSLog(@"file create successful");
    }

    //读出文件的内容
    NSError *error = nil;

    NSString *str2 = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:&error];
    if (!error) {
        NSLog(@"str2:%@",str2);
    }
    else
    {
        NSLog(@"%@",error);
    }
    //NSBundle对象:图片、xib、storyBoard、plist文件都是放在应用程序包中
    NSBundle *bundle = [NSBundle mainBundle];
    //获取包中文件的路径;
    NSString *path = [bundle pathForResource:@"array" ofType:@"plist"];
    //加载包中的xib文件
    NSArray *views  = [bundle loadNibNamed:@"cell" owner:self options:nil];

用户偏好设置

练习:

NSUserDefaults *userDeafults = [NSUserDefaults standardUserDefaults];

    [userDeafults setObject:@"admin" forKey:@"userName"];
    [userDeafults setObject:[NSDate date] forKey:@"loginDate"];
    [userDeafults setInteger:2 forKey:@"loginTimes"];

    //将偏好设置写到文件中去
    [userDeafults synchronize];//同步方法

    //获取home目录
    NSString *homePath = NSHomeDirectory();
    NSLog(@"%@",homePath);

 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSString *userName = [userDefaults objectForKey:@"userName"];
    NSDate *loginDate = [userDefaults objectForKey:@"loginDate"];
    NSString *loginTimes = [userDefaults objectForKey:@"loginTimes"];
    NSLog(@"%@,%@",userName,loginTimes);
    NSDateFormatter *df = [[NSDateFormatter alloc]init];
    df.dateFormat = @"MM-dd HH-mm-ss";
    NSLog(@"loginDate:%@",[df stringFromDate:loginDate]);

注意:UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘,应用程序就终止了。

出现以上问题,可以通过调用synchornize方法强制写入:

[defaults synchronize];

三、应用沙盒结构分析

应?程序包:(上图中的Layer)包含了所有的资源文件和可执行文件

Documents:保存应?运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录

tmp:保存应?运行时所需的临时数据,使?完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时 不会备份该目录

Library/Caches:保存应用运行时?成的需要持久化的数据,iTunes同步设备时不会备份该目录。?一般存储体积大、不需要备份的非重要数据

Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置) 应?会在该?录中查找应?的设置信息。iTunes同步设备时会备份该目录

*参考了别人的请见谅(都是知识点,偷了一下懒)*

时间: 2024-08-26 23:22:37

IOS 沙盒机制 浅析的相关文章

IOS 阶段学习第25天笔记(IOS沙盒机制介绍)

IOS学习(OC语言)知识点整理 一.IOS沙盒机制介绍 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访问(extension) 2)extension是ios8新开放的一种对几个固定系统区域的拓展机制,它可以在一定程度上弥补ios的沙盒机制对应用间的通信限制 3)应用沙盒一般包括以下几个文件目录: 1.应用程序包:包含所有资源文件和可执行文件 2.Documents:保存应用

ios 沙盒机制

1.IOS沙盒机制 在ios系统中,系统都为每一个app创建一个资源目录,这个目录称之为沙盒 .里面存放着图片,属性文件plist,bundle,nib文件等. 其特点如下: 1.每个应用都有属于自己的存储空间 -- 沙盒. 2.每个应用都只能访问自己的沙盒,不能访问别的沙盒 3.每个应用的文件操作必须在沙盒内,比如数据库存储,文件存储等 2.沙盒目录结构 Documents 应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 --- Caches 存储应用程序再次启动所需的信

【转】IOS 沙盒机制及各个目录

IOS沙盒机制(SandBox) 原文http://www.cnblogs.com/taintain1984/archive/2013/03/19/2969201.html IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件等. 1.每个应用程序都在自己的沙盒内 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据

iOS沙盒机制

第一.什么是沙盒 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒 第二.保存内容 所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等 第三.作用 iOS沙盒为程序运行提供了很好的安全保障 第四.目录 1.Documents目录:这个目录用于存储用户数据或其它应该定期备份的信息,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录. 2.AppName.app 目录:这是

【学习ios之路:UI系列】iOS沙盒机制,文件读取,归档与反归档

1.IOS中的沙盒机制 IOS中的沙盒机制是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件等. 特点: 1.每个应用程序都在自己的沙盒内 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.如下图

ios沙盒机制(sandbox)

转自:http://www.cnblogs.com/taintain1984/archive/2013/03/19/2969201.html ios中的沙盒机制是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不能访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片,声音,属性列表和文本文件. 1.每个应用程序都在自己的沙盒内 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 如何查看模拟器的沙盒文件夹在mac

iOS沙盒机制介绍

一.沙盒机制 沙盒的概念:沙盒是每一个iOS应用程序都会自动创建的一个文件系统目录(文件夹),而且沙盒还具有独立.封闭.安全的特点. 沙盒机制 iOS中的沙盒不仅仅是一个文件目录,TA其实更是一种安全体系 TA规定了应用程序只能在为该应用程序创建的文件夹(也就是沙盒)内访问文件,不可以访问其他沙盒内的内容(iOS已经部分开放访问) 所有的非代码文件都保存在沙盒中,图片.音频.视频.属性列表(plist).sqlite数据库以及文本文件等. 沙盒机制的特点 每个应用程序的活动范围都限定在自己的沙盒

iOS沙盒机制的基本操作总结

每个ios程序都有自己的沙盒(sandBox),ios8之后提供沙盒部分开放 我们可以访问沙盒下的文件夹 文件夹包括: 1,documents:保存应用运行时生成的需要持久化的数据 2.tem:保存临时数据,系统重新启动自动消失 3.library:存储的程序默认的设置和其他信息 4.library/caches:保存临时文件 5.library/Preferences:保存偏好设置配置信息,sqlite数据 #import <Foundation/Foundation.h> int main

ios沙盒机制---基本数据类型的存取和文件的基本操作

沙盒快速存储及读取 存储:  [[NSUserDefaults standardUserDefaults] setObject:@"abc" forKey:@"1"]; [[NSUserDefaults standardUserDefaults] synchronize]; 读取: NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:@"1"]; //获取一些目录