iOS基础之沙盒机制-路径获取

来源:互联网 发布:淘宝怎样发布宝贝 编辑:程序博客网 时间:2024/04/28 15:47
 一.什么是沙盒?
每一个iOS应用程序都会为自己创建一个文件系统目录(文件夹),这个独立,封闭,安全的空间,叫做沙盒.
注:1.每一个应用程序都拥有一个应用程序沙盒
2.应用程序沙盒就是一个文件系统目录
二.沙盒机制
1.iOS的沙盒机制是一种安全体系
2.它规定了应用程序只能在为该应用程序创建的文件夹(沙盒)内访问文件, 不可以访问其他沙盒内的被人(iOS8已经部分开放访问)
三.沙盒机制的特点
1.每个应用程序的活动范围都限定在自己的沙盒内
2.不能随意跨越自己的沙盒去访问别的应用程序沙盒中的内容(iOS8已经部分开放访问)
3.应用程序向外请求或接收数据都需要经过权限认证
四.查找某个应用程序的沙盒有两种方式
第一种方式:
点击前往=>同时按住Alt键=>[资源库]=>Developer=>CoreSimulator=>Devices=>59DB5213FA4CDACB3671323E020101=>data=>Containers=>Data=>Application=>01EA9151E7BC4A19A39D38D61D4356A0
注:
  黑色字体的路径表示设备(模拟器)的路径
  黄色字体的路径表示应用程序沙盒的路径

第二种方式:
①.首先设置显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
②.
五.应用程序的沙盒目录
概述: 应用程序的沙盒目录下会有三个文件夹Documents, Library(下面有Caches和Preferences目录), tmp.
1.Documents
保存应用运行时生成的需要持久化的数据,我们通常会存储一些不是太大的数据,例如:plist文件, 文本文件,sqlite文件等,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录, 放置太大的文件就会给苹果服务器造成压力, 苹果会拒绝我们的应用.
获取路径的三种方法
①.  
NSString *documentPath1 = [NSHomeDirectory() stringByAppendingString:@"/Documents"];     
②.
作用也是用来拼接路径 , 唯一的不同就是自动为我们增加了/   
NSString *documentPath2 = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
③.
NSString *documentPath3 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; 
参数1: 获取哪个目录的路径 (Documents)   
参数2: 固定不变的用户沙盒主目录  
参数3: 固定不变的写成YES(写成NO的话, 前面会以波浪线代替, 是不能完成数据的读写操作的) 
2.Library
存储程序的默认设置和其他状态信息
①.Library/Cache:存放缓存文件, iTunes不会备份此目录.此目录下文件不会在应用退出删除.一般存放体积较大,不是特别重要的资料, Library在开发中很少直接使用
②.Librar/Preferences: 保存应用的所有偏好设置, iOS是Settings(设置) 应用会在该目录中查找应用的设置信息, iTunes会自动备份该目录
注意:不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
获取Library路径的方法:
NSString *getLibraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject];

获取Caches路径的方法:
NSString *getCachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

获取Preferences路径的方法:
NSString *getLibraryPath= [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] ;
NSString *getPreferencesPath = [getLibraryPath stringByAppendingPathComponent:@"Preferences"];

注:我们在开发中, 很少直接找到该路径去操作, 而是通过NSUserDefaults  
NSUserDefaults *uesrDefaults = [NSUserDefaults standardUserDefaults];   
[uesrDefaults setObject:@"shuai" forKey:@"杰哥"];

3.tem
保存应用运行是所需要的临时数据, 使用完毕后再将相应的文件从该目录删除. 应用没有运行时, 系统也可能会清除该目录下的文件,iTunes不会同步该目录.iPhone重启时, 该目录下的文件会被删除.
NSString *tmpPath = NSTemporaryDirectory();






0 0
原创粉丝点击