ios沙箱模式开启_iOS沙盒篇

iOS系统在安全性上的一大亮点就是沙盒。

每个iOS应用SDK都被限制在沙盒中,我们可以把沙盒当成一个设置了仅当前SDK可以访问的文件夹,苹果对沙盒有以下几条限制:

应用程序可以在自己的沙盒中运行,但不能访问任何其他应用程序的沙盒。

应用程序间不能共享数据。

禁止应用程序读写沙盒以外的文件夹。

沙盒根目录中有四个文件夹:

AppName.app

Documents

Library

tmp

iTunes在与iPhone同步时,备份所有的Documents和Library文件。

iPhone在重启时,丢弃所有的tmp文件。

一、以下从存放内容、是否会被iTunes同步两个方面来分别描述沙盒中四个文件夹的功能情况:

1. AppName.app

①存放内容

这是应用程序的程序包目录,包含了应用程序本身的数据、资源文件、可执行文件等等。程序启动以后,会根据需要从该目录中动态的加载代码或者资源到内存(懒加载:lazy loading)。

注意:AppName.app目录是只读的。为了防止被篡改,应用在安装的时候会将该目录签名。非越狱情况下,该目录中的内容是无法更改的;如果更改了目录内容,对应的签名就会发生改变,会导致应用程序无法启动。

②是否会被iTunes同步

2. Documents

①存放内容

我们可以将应用程序的数据文件保存在该目录下。不过这些数据类型仅限于不可再生的数据,可再生的数据文件应该存放在Library/Cache目录下

②是否会被iTunes同步

3. Documents/Inbox

①存放内容

该目录用来保存由外部应用请求当前应用程序打开的文件。

比如:应用A向系统注册了几种可打开的文件格式,应用B中有一个A支持的格式的文件F,并申请调用应用A打开文件F。由于F当前是在应用B的沙盒中,我们知道,沙盒机制使不允许应用A访问应用B沙盒中的文件,因此苹果的解决方案是将文件F拷贝一份到应用A的Documents/Inbox目录下,再让应用A打开文件F。

②是否会被iTunes同步

4. Library

①存放内容

苹果建议用来存放默认设置或者其他状态信息。

②是否会被iTunes同步

是,但除了Caches子目录

5. Library/Caches

①存放内容

主要是缓存文件,用户使用过程中缓存都可以保存在这个目录中。上面提到过,Documents目录用于保存不可再生的文件,那么这个目录就用于保存那些可再生的文件,比如网络请求数据。鉴于此,应用程序通常还需要负责删除这些文件。

②是否会被iTunes同步

6. Library/Preferences

①存放内容

应用程序的偏好设置文件。我们使用NSUserDefaults的设置数据都会保存到该目录下的一个plist文件中。

②是否会被iTunes同步

7. tmp

①存放内容

主要存放各种临时文件,保存应用再次启动时不需要的文件。而且,当应用不再需要这些文件时应该主动将其删除,因为该目录下的东西随时有可能被系统清理掉,目前已知的一种可能清理的原因是系统磁盘存储空间不足的时候。

②是否会被iTunes同步

二、获取沙盒路径

1. 获取沙盒主目录路径

NSString *homePath = NSHomeDirectory();

2. 获取Documents路径

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

3. 获取Library路径

NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];

4. 获取Caches路径

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

5. 获取tmp路径

NSString *tmpDir = NSTemporaryDirectory();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言不定方程的二元一次,poj1061 - 同余方程,二元一次不定方程

以前不会解二元一次不定方程的时候不会做,现在会做了。#include #include using namespace std;typedef __int64 int64;void solveType1(int64 a, int64 b, int64 & x, int64 & y, int64 & d) {if (b 0) {x 1; y 0; d a;return;}int64 _x, _y, _d;s…

java中异常注意的细节1

/* public class Test{public static void main(String[] args){int i0;try{func();//区别就是该函数抛出的异常被封装了,外界不知道到底会不会发生该异常System.out.println("i " i);//所以这句话是有机会执行的}catch(Exception e){System.out.printl…

append 后如何删除_如何在STATA中合并数据文件呢?

❝作者:江小白邮箱:jieresearch163.com❞我们在使用stata进行数据分析时,可能涉及多个数据文档的合并操作或者同时使用不同数据集中的多个变量,这都需要我们进行文档间不同变量的归并。例如,我们需要使用CFPS(中国家庭…

linux 内网怎么安装git环境_linux 安装go环境

官网下载安装包The Go Programming Language​golang.google.cngo1.4.linux-amd64.tar.gz解压:tar -C /usr/local -zxvf go1.4.linux-amd64.tar.gz添加环境变量:export PATH$PATH:/usr/local/go/bin安装完成输入go测试安装成功,写个简单的代码…

java中异常注意问题(发生在多态是的异常问题)

/* 异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集。 简单说&#xff1…

cups支持的打印机列表_Win10“Microsoft Print to PDF”虚拟打印机不见了,如何找回?...

MS酋长很早以前在介绍Windows10的新功能时,就提到过《Win10原生支持把文件转换成PDF格式》,该功能实际上是基于“Microsoft Print to PDF”虚拟打印机来实现的。当你点击打印时,在打印机列表中就可以看到“Microsoft Print to PDF”虚拟打印机…

循环队列的进队算法c语言,循环队列的定义,入队算法,出队算法,遍历算法,及其代码实现-Go语言中文社区...

队列 的定义:一种可以是实现“先进先出”的存储结构。数据的进出类似于排队购票。队只允许队尾一端(rear)添加,在另一端队头(front)删除。队有队头(front)和队尾(rear)两个指针。队头front指向第一个元素,队尾rear指向无实际意义的元素&#…

java中paint方法和paintComponent方法的不同

/*1.由Component.java源代码中可以看见其中的paint()方法体是空的,在Container中重写了该方法,其子类Window等也重写了该方法2.由JComponent.java源代码中可以看见其中的paint()方法中调用paintComponent, paintChildren, paintBo…

java office文件加水印_文档预览加水印——或可一用的防泄密方式

给文件加水印是常见的一种宣示版权的方式。像Office、WPS都自带加水印功能,能够给文档加上"保密"、"严禁复制"这样的水印。在多可系统中,也有这么一个添加水印的功能。启用该功能后,在使用HTML5预览时,多可系…

android 获取apk资源,android-apk-parser

APK解析库用于读取/解析 packageName。versionName。versionCode信息的简单类,以及已经编译的androidsdk文件中的更多内容。通过解压 AndroidManifest.xml 文件并解码编译好的XML二进制文件来收集这里信息,就可以实现。我一直在用它来实现各种android工件…

apache license 2.0如何使用防止法律纠纷_go语言使用Swaggo详细教程

相信很多程序猿和我一样不喜欢写API文档。写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全。但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至能让前后端人员打起来。 而今天这篇博客介绍的…

静态代码块,构造代码块,局部代码块演示

public class Test{static int num;static int numObj;//记录有多少个对象产生!static{//静态代码块, 是用来给类进行初始化的!//num 10;num;num *12;//没有进入静态代码块之前,num的初始化值是0System.out.println(num);//main(…

android执行main函数,AndroidStudio执行main方法报错

问题:有时在开发中想直接写一个java文件来测试一些东西,但是AndroidStudio执行的时候会报错。代码信息:public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld");}}报错信息12:04:41:…

模拟java.util.Collection一些简单的用法

/* 需求:模拟java.util.Collection一些简单的用法!注意:java虚拟机中并没有泛型类型的对象。泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的。 1)用泛型的原生类型替代泛型。 原生类型是泛型中去掉尖括号及其中的类型…

hive 导出json格式 文件_Hive 系列 之 基本操作合集

下面是本课程概览:(1)hive系列之简介,安装,beeline和hiveserver2(2)hive系列之基本操作(3)hive系列之udf(4)hive系列之二级分区和动态分区&#x…

android开发自定义view倍丝曲线,从0到1Android自定义View(四)贝塞尔曲线

原标题:从0到1Android自定义View(四)贝塞尔曲线2017年安卓巴士全球开发者论坛-上海站作者本文由两点水投稿,博客地址:http://www.apkbus.com/myspaceblog-911082.html前言扯来扯去,前面三篇自定义 View 文章,终于扯完了…

如何保证对象的唯一性

/* 如何保证对象的唯一性:1.不允许其他程序用new来创建该类对象。2.在该类创建一个本类实例。3.对外提供一个方法让其他程序可以获取该对象的引用。 */ public class Test{public static void main(String[] args){//Subject sub Subject.oSub;//这种方法不可控&am…

ios kvo 要引入_腾讯社招iOS面试记录

毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试。具体部门这边就不说了。这次面试还是收获到了很多。一面电话面试:面试官主要是针对iOS相关的基础问题。先简单自我介绍一下自己对mrc和arc的理解谈谈对自动释放池的理解自动释放池在mrc和…

动态设置html字号,动态设置html的font-size值 (适配文字大小)

PC端(function () {function setRootFontSize() {let rem, rootWidth;let rootHtml document.documentElement;//限制展现页面的最小宽度rootWidth rootHtml.clientWidth < 1366 ? 1366 : rootHtml.clientWidth;// 19.2 设计图尺寸宽 / 100( 设计图的rem 100 )rem roo…

一个小例子对多态简单的理解

class Parent{int age;String name;public Parent(String name, int age){this.name name;this.age age;}public void writeWay(){System.out.println("毛笔!");}}class Child extends Parent{int age;String name;//这里只说为了说明一个问题&#xff0c;其实完全…