XJacky1123

 

1.iOS沙盒机制

  iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox)。每个应用都有属于自己的存储空间,即沙盒 应用只能访问自己的沙盒,不可访问其他区域 如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以去访问,但是如果要装在真机上可以使用,必须将数据库文件拷贝至沙盒中。

2.目录结构

  沙盒默认情况下有三个目录文件夹documents,Library,tmp及应用的App文件,只可在相应的文件夹中进行操作 
  documents:一般用来存放应用中建立的文件,如数据库文件,或程序中浏览到的文件数据。如果进行备份会将此文件夹中的文件包括其中。

        iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据。; 

  Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息
  Library/Cache:用来存放缓存文件,此文件夹下数据在应用退出时不会删除。备份时不会包括此文件夹; 
  tmp:iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。

                                  

3.获取沙盒目录

 

  1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  2. NSString *path = [paths objectAtIndex:0];  

这里用到的NSSearchPathForDirectoriesInDomains方法需要解释下,其声明如下:

FOUNDATION_EXPORT NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);  

该方法用于返回指定范围内的指定名称的目录的路径集合。有三个参数:
  • directory
NSSearchPathDirectory类型的enum值,表明我们要搜索的目录名称,比如这里用NSDocumentDirectory表明我们要搜索的是Documents目录。如果我们将其换成NSCachesDirectory就表示我们搜索的是Library/Caches目录。
  • domainMask
NSSearchPathDomainMask类型的enum值,指定搜索范围,这里的NSUserDomainMask表示搜索的范围限制于当前应用的沙盒目录。还可以写成NSLocalDomainMask(表示/Library)、NSNetworkDomainMask(表示/Network)等。
  • expandTilde
BOOL值,表示是否展开波浪线~。我们知道在iOS中~的全写形式是/User/userName,该值为YES即表示写成全写形式,为NO就表示直接写成“~”。

 

 

分类:

技术点:

相关文章:

  • 2021-10-17
  • 2021-10-17
  • 2021-10-26
  • 2021-10-17
  • 2021-10-17
  • 2021-05-08
  • 2021-10-18
  • 2021-10-17
猜你喜欢
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
  • 2021-10-17
相关资源
相似解决方案