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: 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同步设备时会备份该目录
*参考了别人的请见谅(都是知识点,偷了一下懒)*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   

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

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

    iOS学习(OC语言)知识点整理 一.iOS沙盒机制介绍 1)概念: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒 ...

  2. iOS沙盒机制介绍,Block 的介绍

    一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...

  3. QF——iOS沙盒机制

    iOS沙盒机制: 什么是沙盒机制?  点击进入  点击进入 沙盒机制(SandBox)是一种安全体系,它规定了APP的所有文件数据都必须存储在这片区域.所有非代码文件的数据都保存在这片区域. 沙盒里有 ...

  4. iOS - 沙盒机制

    iOS应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒.所有的非代码文件都要保存在此,例如图像,图标,声音,属性列表(plist文件),文本文件等.沙盒机制作为一 ...

  5. iOS沙盒机制介绍

    一.沙盒机制 沙盒的概念:沙盒是每一个iOS应用程序都会自动创建的一个文件系统目录(文件夹),而且沙盒还具有独立.封闭.安全的特点. 沙盒机制 iOS中的沙盒不仅仅是一个文件目录,TA其实更是一种安全 ...

  6. IOS 沙盒机制 && 关于document\library\tmp的灵活使用

    默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.因为应用的沙盒机制,应用只能在几个目录下读写文件Documents:苹果建议将程序中建立的或在程序中浏览到的文件数 ...

  7. IOS沙盒机制

    一,ios应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒 1,每个应用程序都有自己的存储空间 2,应用程序不能翻过自己的围墙去访问别的存储空间的内容. 3,应用 ...

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

    每个ios程序都有自己的沙盒(sandBox),ios8之后提供沙盒部分开放 我们可以访问沙盒下的文件夹 文件夹包括: 1,documents:保存应用运行时生成的需要持久化的数据 2.tem:保存临 ...

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

    沙盒快速存储及读取 存储:  [[NSUserDefaults standardUserDefaults] setObject:@"abc" forKey:@"1&quo ...

随机推荐

  1. CSS实例

    CSS 实例 CSS背景 设置页面的背景颜色 设置不同元素的背景颜色 设置一个图像作为页面的背景 错误的的背景图片 如何在水平方向重复背景图像 如何定位背景图像 一个固定的背景图片(这个图片不会随页面 ...

  2. Core Animation 学习

    core animation 是在UIKit层之下的一个图形库,用于在iOS 和 OS X 实现动画. Core Animation管理App内容 core animation不是一个完整的绘图系统, ...

  3. Swift_3.0_取消杂乱无章的log输出

    一 举例: 输出的杂乱无章的东西 subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: , persist_lev ...

  4. Mysql学习笔记(十三)权限管理

    学习内容: 1.权限管理: 关于mysql的权限简单的理解就是mysql允许你做你权利以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连 ...

  5. 3D拓扑自动布局之Web Workers篇

    2D拓扑的应用在电信网管和电力SCADA领域早已习以为常了,随着OpenGL特别是WebGL技术的普及,3D方式的数据可视化也慢慢从佛殿神堂步入了寻常百姓家,似乎和最近高档会所被整改为普通茶馆是一样的 ...

  6. Windows魔法堂:解决“由于启动计算机时出现页面文件配置问题.......”

    一.前言 昨晚终于在VirtualBox中安装好Win7了,但在系统启动后弹出窗报“由于启动计算机时出现页面文件配置问题.......”,于是度娘一下.以下记录以供日后查阅. 二.原因 网上说的是在使 ...

  7. 点餐APP 冲刺三总结

    一转眼所有的冲刺都完成了,而今次的冲刺主要是完善数据库,而我们 也成功地实现了,虽然过程很艰辛,但是我们每一个人都学习到了很多新 知识,这是最好的收获.因为今学期没有软件工程的课程,所以大家都是 利用 ...

  8. XSS 和 CSRF 攻击

    web安全中有很多种攻击手段,除了SQL注入外,比较常见的还有 XSS 和 CSRF等 一.XSS(Cross Site Scripting)跨站脚本 XSS其实就是Html的注入问题,攻击者的输入没 ...

  9. net 数据库连接详解 相当经典啊

    ADO.NET与抽水的故事 ADO.NET是微软新一代.NET数据库的访问架构,ADO是ActiveX Data Objects的缩写.ADO.NET是数据库应用程序和数据源之间沟通的桥梁,主要提供一 ...

  10. csharp: WebBrowser read baidumap

    setpoint.html: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Typ ...