iOS沙盒简单介绍

先简单介绍一下什么是沙盒:你可以简单理解成为一个目录,这个目录的改动不会对操作系统造成任何损失。(这里也有一点点介绍

看看苹果的沙盒目录:

再附一张苹果官方的图

一个iOS app操作都是在自己的沙盒中进行的。

首先:

Deveices,里面是各种的模拟器设备。

然后随便找一个模拟器设备。里面的data是里面的数据。然后Container里面Data中有一个Application就是该设备的安装软件。

我们可以看到里面有好多个(就算我们Reset Content and Settings,也会有。因为里面有设备自带的软件,例如通讯录,地图等。)。

随便打开一个就可以看到里面某个程序包括三个目录:

Documents

Library:又包括Caches和Preferences

temp

其中的

Documents只有用户生成的文件、其他的数据以及程序程序不能创建的文件,这里的数据通过iCloud自动备份。我们录制的音频和拍照的图片都可以放到这里。

Library:可以重新下载或者重新生成的数据应该保存在Library的caches目录中。这里用于盛放缓存。

tmp:是临时使用的数据。iCloud不会自动备份这些文件,这些数据使用完后要随时删除,避免占用用户设备空间。

- (NSString *)documentDirectory {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    return [paths objectAtIndex:0];
}

通过上面这个方法可以得到:

/Users/zhanggui/Library/Developer/CoreSimulator/Devices/B6134687-CC10-40DE-BD9D-A2E5AD2D5C03/data/Containers/Data/Application/34361283-8619-481D-B8CB-B25EB4B787E2/Documents

也就是Documents的路径.

还可以得到通过下面的方法:

 NSString *s = NSHomeDirectory();

得到如下结果:

/Users/zhanggui/Library/Developer/CoreSimulator/Devices/B6134687-CC10-40DE-BD9D-A2E5AD2D5C03/data/Containers/Data/Application/08A6D627-1363-48B4-8AF8-A1ED361DC9D6

故名思议,我们通过NSHomeDirectory得到了该安装软件的目录。(里面就包括Documents/Library/temp)

苹果官方介绍的是返回用户的或者应用程序的家目录,依赖于平台。

 

再来看一下如何取得Caches目录路径的方法:

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

返回结果:

/Users/zhanggui/Library/Developer/CoreSimulator/Devices/B6134687-CC10-40DE-BD9D-A2E5AD2D5C03/data/Containers/Data/Application/DB647E93-5F05-4B7B-A8E9-F6F01DD2586B/Library/Caches

最后看一下如何获取tmp目录:

  NSString *s = NSTemporaryDirectory();

返回结果:

/Users/zhanggui/Library/Developer/CoreSimulator/Devices/B6134687-CC10-40DE-BD9D-A2E5AD2D5C03/data/Containers/Data/Application/C7CA833E-8D20-480B-AB91-234A8F17336D/tmp/

--------------------------------------------------------------------大概就这么多吧--------------------------------------------------------------------

NO ,NO ,NO看看苹果官方的说明吧:


AppName.app


This is the app’s bundle. This directory contains the app and all of its resources.

You cannot write to this directory. To prevent tampering, the bundle directory is signed at installation time. Writing to this directory changes the signature and prevents your app from launching. You can, however, gain read-only access to any resources stored in the apps bundle. For more information, see theResource Programming Guide

The contents of this directory are not backed up by iTunes. However, iTunes does perform an initial sync of any apps purchased from the App Store.


Documents/


Use this directory to store user-generated content. The contents of this directory can be made available to the user through file sharing; therefore, his directory should only contain files that you may wish to expose to the user.

The contents of this directory are backed up by iTunes.


Documents/Inbox


Use this directory to access files that your app was asked to open by outside entities. Specifically, the Mail program places email attachments associated with your app in this directory. Document interaction controllers may also place files in it.

Your app can read and delete files in this directory but cannot create new files or write to existing files. If the user tries to edit a file in this directory, your app must silently move it out of the directory before making any changes.

The contents of this directory are backed up by iTunes.


Library/


This is the top-level directory for any files that are not user data files. You typically put files in one of several standard subdirectories. iOS apps commonly use the Application Support and Caches subdirectories; however, you can create custom subdirectories.

Use the Library subdirectories for any files you don’t want exposed to the user. Your app should not use these directories for user data files.

The contents of the Library directory (with the exception of the Caches subdirectory) are backed up by iTunes.

For additional information about the Library directory and its commonly used subdirectories, see The Library Directory Stores App-Specific Files.


tmp/


Use this directory to write temporary files that do not need to persist between launches of your app. Your app should remove files from this directory when they are no longer needed; however, the system may purge this directory when your app is not running.

The contents of this directory are not backed up by iTunes.

英语好的大神可以看一下。不好的飘过,,,,

更多请见:https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

时间: 2024-10-31 06:30:17

iOS沙盒简单介绍的相关文章

iOS 沙盒中文档路径相关问题答不是记者问 - 替人答的,摘录一下解答思路

iOS 沙盒中文档路径相关问题答不是记者问 - 替人答的,摘录一下解答思路 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 最近很累,早早收工,休息一下: 我的休息方式,略微有些不同,就是在网上

ios开发html js提交文件获取不到文件 受限于ios沙盒机制

问题描述 ios开发html js提交文件获取不到文件 受限于ios沙盒机制 录音文件存于_doc文件夹下,可以播放,但是提交的时候受限于ios的沙盒机制保护,无法访问,如何越过这个机制,或者存于一个不受限的文件夹 解决方案 不明白你说的 提交 是怎么个操作.是要播放吗?还是要上传?

iOS沙盒机制

一.简介 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离. 应用必须待在自己的沙盒里,其他应用不能访问该沙盒 二.应用沙盒目录 Application应用程序包:包含了所有的资源文件和和可执行文件,上架前经过数字签名,上架后不可修改 Documents:保存应用程序本身运行时产生的文件或者数据,iCloud备份目录,例如:游戏进度.涂鸦软件的绘图 注意点:不要保存从网络上下载的文件,否则会无法上架! Library 用户偏好,使用 NSUserDefault 直

iOS设计模式——Category简单介绍_IOS

 什么是Category Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择.新添加的方法同样也会被被扩展的类的所有子类自动继承.当知道已有类中某个方法有BUG,但是这个类是以库的形式存在的,我们无法直接修改源代码的时候,Category也可以用于替代这个已有类中某个方法的实体,从而达到修复BUG的目的.然而却没有什么便捷的途径可以去调用已有类中原有的那个被替换掉方法实体了.需要注意的是,当准备有Category来替换某一

iOS的XMPPFramework简单介绍(实现及时通信)_IOS

XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开发. 1. 登录和好友上下线 1.1XMPP中常用对象们 XMPPStream:xmpp基础服务类 XMPPRoster:好友列表类 XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类 XMPPvCardCoreDataStorage:好友名片(昵

简单掌握iOS应用开发中sandbox沙盒的使用_IOS

一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox). 每个应用都有属于自己的存储空间,即沙盒. 应用只能访问自己的沙盒,不可访问其他区域. 如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以去访问,但是如果要装在真机上可以使用,必须将数据库文件拷贝至沙盒中.二.打开沙盒路径 1.如果不知道沙盒路径,可

IOS应用沙盒文件操作

iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1.1.每个应用程序都有自己的存储空间 1.2.应用程序不能翻过自己的围墙去访问别的存储空间的内容 1.3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行. 通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:sandb

举例详解iOS开发过程中的沙盒机制与文件_IOS

iOS沙盒机制  iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 每个应用程序都有自己的存储空间 应用程序不能翻过自己的围墙去访问别的存储空间的内容 打开模拟器沙盒目录 方法1.可以设置显示隐藏文件,然后在Finder下直接打开.设置查看隐藏文件的方法如下:打开终端,输入命名 <p class="p1">显示Mac隐藏文件的命令: 复制代码

ios-iOS 沙盒中copy的问题

问题描述 iOS 沙盒中copy的问题 我有一个.db的数据库 我copy到沙盒中之后用BOOL 判断copy成功 但是内容全不见了 ? 0KB??? NSFileManager *fieldManager=[NSFileManager defaultManager]; NSString *nfieldPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)[0]stringByApp