在模拟器中运行iOS程序,都会为该程序创建一个沙盒(SandBox)。首先声明,我用的系统是Max OS X 10.7.3,编译器是Xcode 4.3.2。想要找到沙盒目录,先运行Finder,然后在Finder的菜单栏找到前往—前往文件夹…,在打开的窗口输入
/Users/UserName/Library/Application Support/iPhone Simulator/
其中,UserName是指用户在Mac系统中的用户名。
点击“前往”,就来到了模拟器目录:
上图中的5.0、5.1就是模拟器的版本。这里打开5.1:
上图中的目录结构类似于实际的iOS设备中的目录结构。
Applications目录就是安装程序的地方。打开它:
可以看到有两个文件夹,文件夹的名字很复杂。这两个文件夹就可以看成是现在安装在5.1模拟器中的两个程序。它们的名称是在Xcode中运行是自动创建的,名称是随机产生的全局唯一标识符。这里展开其中第二个文件夹。它就是上篇文章小例子运行时产生的:
如上图所示,程序中包含三个文件夹:Documents、Library和tmp。
1、Documents:
这个目录用于存放程序中的数据,除了那些基于NSUserDefaults的设置数据。
获取程序的Documents目录的代码是:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];
则documentsDirectory中存储的就是Documents目录的地址。
Ps:
NSUserDomainMask常量表示我们希望搜索限制于我们应用程序的沙盒。
2、Library:
这个目录包含两个子目录:Caches与Preferences。(可能还有其他很多,Cookies等文件夹)
Preferences这个目录存放的是基于NSUserDefaults的设置数据,例如上图中可以看到一个plist文件,它就是我们上次进行的设置项,是Settings程序读写的。打开它,可以看到我们上次做的设置是保存在这个文件中的:
2.1 获取Library目录地址的代码与Documents类似:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libraryDirectory = [paths objectAtIndex:0];
2.2 获取Caches目录地址:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString* cachesDirectory = [paths objectAtIndex:0];
3、tmp:
我们可以在这个目录下存放临时文件。我们的程序应当要负责删除tmp目录下的内容。
获取tmp目录:
我看很多资料上写的获取tmp目录的方法是:
NSString *tempPath = NSTemporaryDirectory();
但是我发现获得的却不是程序的tmp目录,而是:
/var/folders/tp/pl9mdxtx199bs8_k29n89ff80000gn/T/
貌似也没有一个像NSLibraryDirectory那样的参数可以直接用来获取这个目录。
不过,如果我们可以获得这个程序的根目录,就可以获取tmp目录了:
//获取程序的根目录 NSString *homeDirectory = NSHomeDirectory(); //获取tmp目录的地址 NSString *tmpDirectory = [homeDirectory stringByAppendingPathComponent:@"tmp"];
tmpDirectory中存储的就是本程序的tmp目录。
我使用FileManager向其中创建子目录和文件时都可以执行,不过我有个程序试图用FTP向其中下载文件,却出现了文件写入错误。
获取了上述目录地址后,想要获得其中的文件或者子目录,只要:
NSString *filename = [documentsDirectory stringByAppendingPathComponent:@"filename.txt"];
在真机上,NSTemporaryDirectory对应的就是app目录的tmp目录。感谢@xeonwell大侠的指导。
from:http://my.oschina.net/plumsoft/blog/56655
相关推荐
在iOS应用开发中,"沙盒"(Sandbox)是一个重要的概念,它是每个应用程序的专属运行环境,确保了不同应用之间的数据隔离和安全性。每个iOS应用都有自己的沙盒目录,包含若干子目录,用于存储应用的数据、缓存、文档...
在iOS应用开发中,了解和熟练使用Sandbox沙盒机制是非常关键的一环。Sandbox是一种安全机制,旨在限制应用程序的权限,确保它们只能访问属于自己的特定区域,而不能侵犯其他应用或系统的隐私。沙盒为每个应用提供了...
沙盒机制(SandBox)是计算机安全领域中的一个重要概念,主要用于限制程序的权限,防止它们对系统进行未经授权的访问或操作。在IT行业中,尤其是在移动设备应用开发(如iOS和Android)、网络安全和云计算环境中,...
然而,在iOS设备上,由于Sandbox机制的存在,内核漏洞通常需要在Sandbox内部或外部触发,可能通过Mobile或Root权限才能利用。这增加了漏洞利用的复杂性。 为了防御内核漏洞,iOS引入了多种安全机制,如Code Sign,...
在iOS应用开发中,沙盒(Sandbox)是一种安全机制,用于限制应用程序的访问权限,以保护用户数据的安全。每个iOS应用都有自己的独立沙盒,其中包含多个特定的文件夹,如Documents、Library、tmp等。这个“iOS沙盒...
在iOS应用开发中,每个应用程序都有自己的独立空间,被称为“沙盒”(Sandbox)。这个沙盒为每个应用提供了一个安全、隔离的环境,确保应用只能访问其内部的数据,而不能随意访问其他应用或系统资源。沙盒数据存储是...
总的来说,这个项目通过二次封装iOS系统的相机功能,实现了更简洁的代码结构、更灵活的配置选项以及强大的本地保存和删除功能,为iOS开发者提供了一个高效、易用的相机解决方案。这有助于开发者快速集成相机功能,...
在iOS应用开发中,每个应用程序都有自己的专属空间,被称为“沙盒”(Sandbox)。这个沙盒文件管理系统是iOS安全模型的重要组成部分,旨在保护用户的数据安全,并限制应用程序之间的相互访问。"ios-沙盒文件管理.zip...
另外,iOS 11后引入了App Sandbox,限制了应用对文件系统的访问,需要在Info.plist中配置相应的权限。 8. **网络请求与数据流**:在线浏览文件涉及到网络请求,需要理解`URLSession`的工作原理,以及如何处理数据流...
4. **sandbox**: 新版本的iOS引入了App Groups,允许不同应用共享特定的存储区域,这就是所谓的共享容器。在这个目录下,开发者可以为App Group创建自定义的子目录。 对于数据持久化操作,常见的方法包括: - **...
11. **Sandbox**:iOS应用运行在沙盒环境中,每个应用都有自己的独立空间,不能访问其他应用的数据,保障了系统的安全性和隐私。 12. **观察者模式(Observer Pattern)**:观察者模式是一种行为设计模式,允许一个...
沙盒(Sandbox)是一种广泛应用于iOS系统的安全模型,其核心思想是在每个应用程序之间创建一个虚拟隔离环境。这样即使某个应用受到攻击也不会危及其他应用的安全性。 #### 在应用程序中应用沙盒 接下来详细介绍...
2. **沙盒路径的结构** 沙盒路径通常包含以下部分: - **Documents**:用于存储应用生成的持久化数据,例如用户文档。 - **Library**:包括三个子目录:Preferences(偏好设置)、Caches(缓存数据)和...
总的来说,ThinkPHP5实现给iOS推送消息的过程涉及到了APNs服务、证书管理、消息结构的构建以及网络通信等多方面的知识。在实际开发中,为了简化这一流程和提高可维护性,通常会封装成一个服务类或者使用第三方推送...
9. **安全与隐私**:iOS强调用户隐私,如Keychain、App Sandbox等机制。解析这部分源码有助于开发者确保应用的安全性和合规性。 10. **性能优化**:通过源码分析,开发者可以学习到如何利用Instruments工具进行性能...
- 消息结构包括一个Header和一个Payload。Header包含设备Token(由苹果分配给每个安装了你的应用的设备)、通知类型和消息ID。Payload则包含了显示给用户的信息,如标题、正文、声音等。 - JSON格式常被用来编码...
9. **测试环境和生产环境**: Apple提供了两个不同的环境,开发(sandbox)和生产,以支持开发阶段和正式上线后的推送。开发者需要分别配置相应的证书以连接到对应的APNS服务器。 综上所述,实现Java iOS消息推送...
此外,iOS和Android等移动操作系统也使用沙盒机制来隔离应用,确保它们只能访问自己被授权的资源。 总的来说,"sandbox"在IT领域是一个至关重要的概念,它为创新、测试和安全提供了平衡点。无论是HTML的iframe沙盒...
总的来说,通过理解deviceToken的获取、SSL证书的创建、消息结构的构建以及与APNs的通信,你可以使用PHP搭建一个基本的iOS消息推送服务端。不过,实际项目中可能还需要考虑更多的细节,比如推送消息的可靠性和性能...