关于沙盒路径的一些理解



## 查找沙盒路径


- 显示沙盒路径


`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 - 随即声成的一组唯一的字符串组合


1. 73ADBB27-9F61-4D2D-9C1B-D3340507F70A 表示模拟器,及时模拟器重新设置,该数字也不会改变

2. 4EAD4389-FEAB-46B0-B053-E4405CF75230 对应的是 "bundle"

3. AD1CEEEC-B8D7-415E-A254-32F31BE738DF 对应的是 "沙盒" 会变化


注意:以上的特点是在 iOS 8.0 以上才有的,会更安全!


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

你可能感兴趣的:(关于沙盒路径的一些理解)