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

本文介绍了iOS应用的沙盒机制,强调其安全性和限制。每个应用都有独立的沙盒,不能随意访问其他应用的沙盒内容。内容详细讲述了如何查找应用的沙盒路径,包括Documents、Library(Caches和Preferences)、tmp目录的作用和获取路径的方法。Documents用于存储持久化数据,Library/Cache存放缓存,Library/Preferences保存应用设置,tmp则用于临时数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一.什么是沙盒?
每一个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();






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值