NSBundle和沙盒(Document、Library和Cashes)

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。
看下面两张图:

NSBundle和沙盒(Document、Library和Cashes)_第1张图片
NSBundle路径
沙盒路径
二、文件内容

<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

因为这方面的文章几乎没找到过,如果有大神能分享下就太好了!!!

你可能感兴趣的:(NSBundle和沙盒(Document、Library和Cashes))