NSBundle和沙盒(Document、Library和Cas
NSBundle和沙盒(Document、Library和Cashes)
首先要区分NSBundle和沙盒我们分两个方面来看:
以下都是使用模拟器调试,因为等下好展示两者的文件结构。真机其实是一样的,只是要看真机的文件结构太麻烦了。
一、文件路径
1. NSBundle路径:/Users/wangjie/Library/Developer/CoreSimulator/Devices/26BF859E-922A-4E36-83AC-27CD6EC662AF/data/Containers/Bundle/Application/734FF183-1613-49F2-9A59-FA60B76FAD4F/YuDao.app
2. 沙盒路径: /Users/wangjie/Library/Developer/CoreSimulator/Devices/26BF859E-922A-4E36-83AC-27CD6EC662AF/data/Containers/Data/Application/0E060108-C1CB-4D0D-9080-4D9085140C53/
这里很容易看出来差别,首先第一个差别就在Containers后面,一个是Bundle,一个是Data。
看下面两张图:
二、文件内容
<1> Bundle
Bundle主要是一些资源文件,这些资源包含了如图像,声音,编译好的代码,nib文件。这里是在程序打包时就有了点,而不是后续通过代码写进去的。
想看具体的话,可以点击右键.app,然后选择显示包内容。这里就不贴图了。
<2> 沙盒
Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
Library 目录:这个目录下有两个子目录:Caches 和 Preferences
Preferences 目录包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
Caches 目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。
上面沙盒的简介转自http://blog.csdn.net/u012891546/article/details/50976790
下面是我自己的用法和理解:
Document:这里我分了两个文件:User和Common
User:用户相关。这里分了DB(数据库)和Files(文件)。DB就是数据库文件,例如好友、聊天记录等。Files存用户头像、背景图片、动态图片等地本地文件。
Common:通用。同User一样,分了DB和Files。DB里存一些通用数据库内容,例如首页的动态和排行榜,免得用户进来看到空的页面。Files里存启动的广告图片或视频文件、聊天用的通用表情文件(这里也可以直接打包到资源文件里,如果可变的,就写到这里)和省市区的plist文件等。
Caches:这里我只用了图片缓存。因为我在用SDWebImage的时候发现,它就是在这里创建了一个default-com.hackemist.SDWebImageCache.default文件。
Preferences:这里会自动生成一个BundleID生成的plist文件。其实就是你平常用的[NSUserDefaults standardUserDefaults]指向的文件。
temp:不用管,这都是系统自己操作的。我目前发现的就是web访问访问时会往里写一些缓存数据,好像Library里的Cookies和WebKit也有,具体的不太清楚。
这里贴两张我的文件结构:
Document_1 Document_2因为这方面的文章几乎没找到过,如果有大神能分享下就太好了!!!