iOS的沙盒机制

数据持久化:就是把数据从内存中写入到本地(对于iOS开发来说,就是把数据写入到应用的沙盒文件夹在中).

沙盒(SandBox):沙盒的本质就是文件夹,iOS采用沙盒机制来管理每一个安装到手机上的应用,每一个应用都有一个沙盒,而且这个沙盒相对独立,封闭的,安全的,通常情况下只有自己才能访问自己.

沙盒安全机制:沙盒的文件是随机生成的,而且每次都会生成一个沙盒的文件名,且采用十六进制数字命名法.

#import "ViewController.h"

#define kName @"iOS"

#define kPassword @"123456"

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self handleSandBox];

}

// 沙盒知识点

- (void)handleSandBox{

// 获取沙盒文件路径:  NSHomeDirectory()沙盒文件的路径

NSLog(@"%@",NSHomeDirectory());

// 获取应用程序包的路径: [[NSBundle mainBundle]bundlePath]

// Xcode6.0和iOS8.0之前应用程序包和沙盒是在同一个文件夹下面,之后就将他们两个分开放置了

NSLog(@"%@",[[NSBundle mainBundle]bundlePath]);

// 沙盒文件中系统帮我们生成一些文件夹,每一个文件夹都有自己的作用

/*

Documents:这个文件夹中的数据将会和ituns进行同步,这个文件夹中不会存放太大的数据,如果数据量比较大就会对苹果的服务器造成很大压力,如果这里面放一些比较大的数据,程序     审核时会直接拒掉

Library:

Caches:把大数据放在Library下的Caches文件夹中(电影,音乐等),这个文件夹下的数据不会和ituns同步

Perferences:这个文件也会和ituns同步,这里一般存储用户的偏好设置(比如:用户是否第一次登录,登录的数据)

tmp:临时的文件路径,不会进行同步,一般存放的是压缩文件(.zip),这里的数据当我们的手机重用启动时,会自动清空.

*/

// 如何获取沙盒文件夹下的其它文件的路径?只有获取到路径才能方便我们存储数据

/* 这个是其中一中写法,一般不用

NSString *documentsPath = [NSHomeDirectory() stringByAppendingString:@"/Doucuments"];

NSLog(@"%@",documentsPath);

*/

// 获取Documents文件路径(一般是在用户域下)

// 参数1:要搜索的文件夹(搜索的优先级 user->local->newWord->system)

// 参数2:搜索域(域:用户域 本地域 网域 系统域)

// 参数3:是否返回绝对路径

// 最早这个方法用于MAC端开发,对PC用户来说可以有多个用户,所以该方法的返回值是个数组,而现在这个方法用于iOS端开发,手机用户只有一个,所以只需取出数组中唯一元素即可.

NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)lastObject];

NSLog(@"%@",documentsPath);

// 获取Library文件路径

NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)lastObject];

NSLog(@"%@",libraryPath);

// 获取Caches文件夹路径

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];

NSLog(@"%@",cachesPath);

// 获取perferences文件路径:只能通过NSUserDefaults这个类操作这个文件夹

// NSUserDefaults用户偏好设置类,是一个单例

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// 模拟用户第一次登陆:view的背景是红色,以后就是绿色

BOOL isFirst = [defaults boolForKey:@"isFirst"];

if (isFirst) {// 以后的登陆情况

self.view.backgroundColor = [UIColor greenColor];

}else{// 第一次登陆的情况

self.view.backgroundColor = [UIColor redColor];

[defaults setBool:YES forKey:@"isFirst"];

}

// 简单模拟等一次登陆存储用户名和密码,以后直接显示登陆成功

NSString *name = [defaults valueForKey:@"name"];

NSString *password = [defaults valueForKey:@"password"];

if ([name isEqualToString:kName] && [password isEqualToString:kPassword]) {// 以后登陆

NSLog(@"登陆成功");

}else{// 第一次登陆

NSLog(@"请输入用户名和密码");

[defaults setObject:@"iOS" forKey:@"name"];

[defaults setObject:@"123456" forKey:@"password"];

}

// 获取tmp文件夹路径

NSLog(@"%@",NSTemporaryDirectory());

}

时间: 2024-12-11 03:30:30

iOS的沙盒机制的相关文章

IOS-沙盒机制(一 简述)

一 IOS沙盒机制 出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上.当应用程序被安装到设备上时,系统会为其创建一个家目录,这个家目录就是应用程序的沙盒.所以的文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等.(For security reasons, iOS places each app (including its preferences and data) in a sandbox at install time. A sandbox is a

IOS-沙盒机制(二 文件读写)

一 目录说明 如下图所示,一个沙盒中典型存在下面的目录和文件 各个目录及文件说明: 1.Documents      您应该将所有的应用程序数据文件写入到这个目录下,这个目录用于存储用户数据或其它应该定期备份的信息. 2.AppName.app   这是应用程序的程序包目录,包含应用程序的本身.由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动. 3.Library              这个目录下有两个子目录:Caches 和 Prefer

iOS之沙盒机制

今天有讲到数据持久化的问题,就有涉及到数据存储位置的问题.iOS对于数据安全问题做的很严谨,使用的沙盒机制(Sandbox),相对于安卓系统而言,一下子真的是难以消化. 在iOS8之前的沙盒文件夹中存在四个文件夹 Document  存储用户数据,需要备份的信息(数据持久化操作的文件夹) Library Library/Caches  存储缓存文件,程序专用的支持文件 Library/Preferences  存储应用程序的偏好设置文件 .app   程序包(iOS8时,app不存储在沙盒中,有

iOS之沙盒机制和如何获取沙盒路径

iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件.文本.属性列表等. 沙盒机制简介 沙盒简述: 每一个APP都有一个存储空间,就是沙盒. APP之间不能相互通信. 沙盒根目录结构:Documents.Library.temp. 简述一下Documents.Library.temp的区别: Documents:用于存储用户数据,iTunes备份和恢复

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

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

OS的沙盒机制 --基础知识

/* iOS的沙盒机制,应用只能访问自己应用目录下的文件. iOS不像android,没有SD卡概念,不能直接访问图像.视频等内容. iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内. 默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.  上面的完整路径为:用户->资源库->Application Support->iPhone Simulator->7.1->

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

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

IOS 沙盒机制 浅析

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件等. 1.每个应用程序都在自己的沙盒内(提示:在IOS8中已经开放访问) 2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容 3.应用程序向外请求或接收数据都需要经过权限认证 //获取home目录 NSString *homePath = NSHomeDirectory(); NSLog(@"h

ios 沙盒机制

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