无限互联iOS培训课程:iOS沙盒机制

iOS沙盒机制是每一名从事iOS开发技术的人都必定会接触到的东西,有很多关于iOS沙盒机制的介绍,今天无限互联iOS培训中心的老师专门整理了关于iOS沙盒机制的技术贴,希望对广大iOS培训学员和iOS开发爱好者有所帮助。

一、IOS沙盒机制

IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒,所有的非代码文件都要保存在此,既:每个iOS应用都有自己的应用沙盒,应用沙盒就是文件系统目录。

例如图像,图标,声音,映像,属性列表,文本文件等。

1.1、每个应用程序都有自己的存储空间

1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容

1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。

无限互联iOS培训课程:iOS沙盒机制

无限互联iOS培训课程:iOS沙盒机制

应用沙盒一般包括以下几个文件目录:

1、应用程序包:包含所有资源文件和可执行文件

NSString *sandBox=NSHomeDirectory();

2、Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录

3、tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除,应用没有运行时,系统也可能会自动清理

该目录下的文件,iTunes不会同步该目录,iPhone重启时该目录下的文件会丢失。

4、Libaray:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录。

5、Libaray/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除,一般存放体积比较大,不是很重要的资源

6、Libaray/Preferences:保存应用的所有偏好设置,ios的Settings(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。

二、如何查看沙盒?

1.方法一:前往文件夹打开

直接在Finder->前往->前往文件夹(或者点击桌面空白处command+shift+g),

输入上面的内容即可。记住将XXXXX换成你的电脑用户名。

或者点击桌面选择前往再选择前往文件夹是一样的效果!然后可以在对话框中输入”/users/用户名/library/”,这样就可以进入OS X 库名录.然后依次进入该目录下的Application Support/iphone
simulator/7.1/Applications子目录(此处是进入 ios 7.1模拟器).

ios 将所有的第三方保存在Applications目录下,每个应用都保存在一个被称为Globally Unique Identifier(GUID)的文件夹中,GUID就是应用程序沙盒.

2.方法二:在系统密令行窗口可以设置显示隐藏文件,然后在Finder下直接打开。设置查看隐藏文件的方法如下:打开终端,输入命名

显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

输完单击Enter键,退出终端,再通过Finder直接进入/users/用户名/library/Application Support/iphone
simulator/7.1/Applications目录,同样可以看到GUID文件夹.

三、文件保存策略思考

当应用程序需要把运行状态,用户的数据保存下来时,通常会选择保存在应用程序的沙盒的Documents文件夹下,除了基于NSUserDefaults的数据会保存在Library/Preferences目录下,当然一些程序的临时文件会存储在tmp目录下.一旦文件失去作用,应用程序应该立即删除该临时文件,释放手机上宝贵的存储空间.

当我们决定把文件保存在Documents文件夹下是,需要思考一个问题,应用存储到底把数据保存在单个文件中还是多个文件中?

通常来说,建议使用单个文件保存数据,这样使用简单.比如保存一些基本数据,程序可以考虑将数据保存到NSArray或者NSDictionary中,接下里通过writeToFile: atomically:方法将数据写入单个文件中.当应用程序启动的时候,可调用NSArray的arrayWithContentsOfFile:或者NSDictionary的
dictionaryWithContentsOfFile:方法获取文件中的数据,根据文件的内容恢复程序的状态.这种方法简单:但是缺点在于,每次读取文件内容总是一次性加载全部文件内容,这样可能导致内存紧张,保存文件内容时只改动了很少的一部分内容,程序也将NSArray或者NSDictionary中所有的数据写入文件.

使用多文件保存数据是另一种持久化存储方法,假如我们要编写一个处理电子邮件的引用,由于每份电子邮件的内容都可能比较大,而且电子邮件之间关联性较小,因此可以使用多文件存储.使用多文件存储的优点和缺点:

优点:应用程序需要哪部分数据,就加载哪个文件,从而避免一次性加载所有的持久化数据带来的内存紧张,应用程序修改了哪部分数据,只要保存对应的文件即可,这样可以避免保存所有的持久化数据.

缺点:多文件保存数据必然编程相对复杂,可能需要额外的数据结构去管理持久化内容与存储文件之间的对应关系.

一般来说,如果应用程序需要保存,读取的数据量不大,则可以使用NSArray或者NSDictionary来保存,读取数据.当数据量较大时,使用SQLite3或者CoreData.

另外这里涉及到一个问题:iOS系统是怎么封闭自己的?

IOS是封闭式操作系统,这是由IOS沙盒运行机制造就的,IOS只能通过itunes来进行输入数据,数据是无法输出的。iOS沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序。以杀毒软件中的沙盒技术解释一下。“沙盒”技术是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。

iOS培训机构首选无限互联iOS培训,iOS培训引领者,专注iOS培训,用心做靠谱的iOS培训机构。

来源:优化狮

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年7月15日
下一篇 2016年7月15日

相关推荐