原创:iOS 如何访问沙盒sandbox

By | 2013年11月15日
  • 什么是沙盒sandbox?

沙盒,音译自sandbox,是iOS文件中一种非常重要的安全访问文件机制。可以把沙盒想像成一个隐藏的文件夹,只有开发者知道沙盒的存在,其他人却无法看到或者访问你的沙盒。

沙盒机制下,iOS应用程序对文件系统的访问限于一组最基本的文件夹、网络资源和硬件。

  • 沙盒有什么用?

  1. 应用程序可以在自已的沙盒区域内进行操作,但无法访问其他程序的沙盒。
  2. 无法共享数据,文件必须位于沙盒提供的文件夹中,且无法复制至其他应用程序的沙盒,或从其他应用程序沙盒中复制到自已程序的沙盒中。
  3. 任何读、写应用程序沙盒以外文件的尝试都会被AppStore拒绝审核通过,iOS禁止应用程序将内容写到沙盒外的大多数文件夹中。
  4. 应用程序中拥有自已的Library、Documents和/tmp文件夹。其实就是三个文件夹,只不过其他应用程序无法将其内容访问或写入该沙盒中。
  • 文件夹简述

Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
Library:存储程序的默认设置或其它状态信息;

Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除

 

如果看不到以上目录,有可能隐藏了,只需要在终端命令中输入以下命令即可显示mac下隐藏文件:

defaults write com . apple . finder AppleShowAllFiles bool true

最后一个参数true,如果改成false,就是不显示mac下隐藏文件。

 

  • 如何在程序中访问沙盒?

在XCode中中输入以下代码

[code lang=”objc”]NSLog(@"%@",NSHomeDirectory());[/code]

执行程序后会在控制台中显示如下代码:

2013-11-15 16:17:29.758 MySDWebImage[3475:907] /Users/********/Library/Application Support/iPhone Simulator/6.1/Applications/E7D3***1-067F-4D00-A**C-5F645613**69

 

 

  • 其他

NSHomeDirectory()//当前应用程序的沙盒根目录

上面提到了沙盒下有3个目录,既然如此,如果需要访问沙盒下的Documents目录,应该怎么办?


[code lang=”objc”]NSLog(@"Documents path = %@", [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents"]);[/code]

 

现在可以执行一下看看结果咯cheeky

 

 

如果您还需要了解更多的沙盒机制,可以到苹果渔迷的淘宝店上去看看,对应商品链接,http://item.taobao.com/item.htm?id=36070535535

 

本文中提到的所有代码,均可以在苹果渔迷淘宝店中找到,而且更加齐全,功能更加完善,自主版权,已支持最新iOS7.0以上版本。

 

==================================================

 

 

版权声明:

本站所有关于iOS技术的文章皆为原创,如需要转截,请注明出处。如果你有疑惑,可以到苹果渔迷的淘宝店挖挖宝贝,里面或许有你想要的东西。

苹果渔迷淘宝店:http://appfish.taobao.com

主营iOS软件开发服务,代理申请iOS开发者帐号(个人、公司、企业),代理申请邓白氏编码。顺便还卖一些小渔具,有需要的朋友可以进来苹果渔迷的淘宝店看看。