iOS沙盒

沙盒介绍

每个iOS应用都有自己的应用沙盒(应用沙盒就是应用的文件夹),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒

应用沙盒的文件系统目录:

技术分享

模拟器沙盒的根路径在:

/Users/chenjiang/Library/Developer/CoreSimulator/Devices/E4108E1C-3F46-477C-8F75-69D2333D4DD7/data/Containers/Data/Application

沙盒路径

查找沙盒路径
显示沙盒路径

1.NSLog 這個NSHomeDirectory();

2.通過SimPholders2這個軟件查找
3.lldb命令 po NSHomeDirectory()

显示 Bundle 路径
po [[NSBundle mainBundle] bundlePath]

po = print object 是 lldb 的指令,是非常重要的调试指令
不用在开发时,写大量的 NSLog

沙盒的主要路径
Documents
需要保存由应用程序本身产生的文件或者数据,例如:游戏进度、涂鸦软件的绘图
目录中的文件会被自动保存在 iCloud
注意:不要保存从网络上下载的文件,否则会无法上架!
Caches
保存临时文件,后续需要使用,例如:缓存图片,离线数据(地图数据)
系统不会清理 cache 目录中的文件
就要求程序开发时,必须提供 cache 目录的清理解决方案
tmp
保存临时文件,后续不需要使用
tmp 目录中的文件,系统会自动清理
重新启动手机,tmp 目录会被清空
系统磁盘空间不足时,系统也会自动清理
Preferences
用户偏好,使用 NSUserDefault 直接读写!
如果要想数据及时写入磁盘,还需要调用一个同步方法 synchronize
路径对比
bundle 路径

/Users/apple/Library/Developer/CoreSimulator/Devices/73ADBB27-9F61-4D2D-9C1B-D3340507F70A/data/Containers/Bundle/Application/4EAD4389-FEAB-46B0-B053-E4405CF75230/

沙盒路径

/Users/apple/Library/Developer/CoreSimulator/Devices/73ADBB27-9F61-4D2D-9C1B-D3340507F70A/data/Containers/Data/Application/AD1CEEEC-B8D7-415E-A254-32F31BE738DF

UDID - 随即声成的一组唯一的字符串组合

73ADBB27-9F61-4D2D-9C1B-D3340507F70A 表示模拟器,及时模拟器重新设置,该数字也不会改变
4EAD4389-FEAB-46B0-B053-E4405CF75230 对应的是 "bundle"
AD1CEEEC-B8D7-415E-A254-32F31BE738DF 对应的是 "沙盒" 会变化
注意:以上的特点是在 iOS 8.0 以上才有的,会更安全!

在 iOS 7.0 以及之前,Bunlde 的路径和沙盒的路径在一个目录下!

iOS 程序员,一定要熟悉各个版本之间的变化!

iOS 6.0 的一些细节!
新出了一个非常流行的面试题:一个 iOS 6.0 的程序,直接在 iOS 7.0 的设备上运行,通常会出现什么问题?

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。