大家好,这是本人IOS生涯中得第一篇博客,在此希望以博客的形式对前辈的经验以及自己的学习经验做个笔录,与大家共同学习.本文中如果有不对的地方,还望各位大神及时提出宝贵的修改意见.
我们大家都知道苹果十分重视Iphone的安全机制.为了保护用户的隐私,苹果想了很多办法来保证用户的隐私.其中沙盒保存数据就是其中的一种.为什么呢?因为沙盒目录下的文件只限于本app才能对其数据进行读取.其他得APP是不能对齐进行访问的, 在这里也不得不说一下访问通讯录.我们是可以在征求到用户同意之后访问系统的通讯录的.显然苹果对安全这一块做了很多事情.
那么我们这个仅限于app自身访问的沙盒目录的结构又是怎样的呢?
要看看结构是怎么样那我们就先进去
我们可以通过下面的方式进入
NSLog(@"%@",NSHomeDirectory());
打印出来得结果是/Users/liuyaozong/Library/Developer/CoreSimulator/Devices/8113C0D2-66A4-4E80-A669-12B7F3572F67/data/Containers/Data/Application/1E4FAB67-43B0-494F-864B-FEDB6F18BBFC
通过这个结果来访问沙盒,进入之后我们便可看见下面的结构,如下图所示,有Documents,Library- Caches Preferences tmp 这几个文件夹
下面我就用比较通俗易懂的话给大伙说说这些个文件夹的用途
Documents:一般用来存放应用中建立的文件,如数据库文件,或程序中浏览到的文件数据。如果进行备份会将此文件夹中的文件包括其中;一般来说 这个文件夹呢我们一般都是用来保存不可再生的数据.什么叫做不可再生的数据呢.就是说如果这个数据被删除之后就不能再进行获取了,iTunes备份和恢复的时候会包括此目录
我们有一个方法可以打印当前的Documents目录
NSArray *paths = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];
打印结果:
/Users/liuyaozong/Library/Developer/CoreSimulator/Devices/8113C0D2-66A4-4E80-A669-12B7F3572F67/data/Containers/Data/Application/1E4FAB67-43B0-494F-864B-FEDB6F18BBFC/Documents
Library:这个文件夹苹果的建议是用来保存一些默认的设置,或者一些其他的状态信息,这个文件下的内容除了Caches外是会被同步的.
Caches:简单的说就是保存一些缓存文件数据.这些数据就是可再生的数据了.举个简单得例子.下载图片,为了节省用户的流量以及提高用户的体验.我们都会选择缓存图片,下载完之后第二次就在缓存中取,就极大的增加的加载的效率.但是当缓存过大我们删除之后,或者app自动清理之后我们就可以重新重服务器上下载数据.那么这样子的数据呢就是可再生的数据.
Preferences:偏好设置.我们可以保存一些数据 如plist文件.利用下面代码很容易在偏好设置中保存或者读取数据
//保存数据
NSUserDefaults *falue=[NSUserDefaults standardUserDefaults];
[falue setObject:@"jack" forKey:@"name"];
//获取数据
NSUserDefaults *del=[NSUserDefaults standardUserDefaults];
NSString *name=[del objectForKey:@"name"];
方便我们写程序的时候保存变量,读取变量
Tmp:这个文件夹则是用来保存临时文件的.比如说这个文件在下次开启APP的时候不要再用,我们就把这样子的临时数据放在这个下面,这样子的文件在系统内存不足的时候就有可能被清理掉.这个目录下的数据是不会被同步的