iOS开发10-iOS SandBox(沙盒或沙盘)介绍、路径获取
2015-10-24 21:55
417 查看
iOS开发10-iOS SandBox(沙盒或沙盘)介绍、路径获取
代码下载(Xcode7.0.1)有问题请联系博主,邮箱:nathanlee1987@aliyun.com
1、沙盒路径的获取
"应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。NSString *path = [[NSBundle mainBundle] bundlePath];
NSLog(@"%@", path);
//1、获取沙盒根路径 NSString *sandbox=NSHomeDirectory(); NSLog(@"1、获取沙盒根路径=%@",sandbox); //2、获取Documents路径-最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据。 //程序运行中生成的文件,例如数据库。 //特点:这个文件夹中的内容会被上传,所以不适合放体积较大的文件,例如音频视频图片,如果放了视频音频,打包上传审核会被拒绝。 NSString * documents=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSLog(@"2、获取Documents路径=%@",documents); //3、获取Caches路径(不会被上传),一般用于文件下载存储
<span style="font-family: Arial, Helvetica, sans-serif;">Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息</span>
//Library//Preferences 不需要手动操作 -对手机进行默认设置,字体字号等 //Library//Caches缓存 长期保存 iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。 NSString * Caches=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; NSLog(@"3、获取Caches路径=%@",Caches); //4、获取tmp路径:iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。 NSString * tmp=NSTemporaryDirectory(); NSLog(@"4、获取tmp路径=%@",tmp); //5、获取bundlePath路径 NSString *bundlepath= [[NSBundle mainBundle]bundlePath]; NSLog(@"5、获取bundlepath=%@", bundlepath); //运行结果1 /* 2015-10-24 21:33:25.170 SandBox[5454:396935] 1、获取沙盒根路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/71E260C9-4F3D-49CA-9482-62949E2F7404 2015-10-24 21:33:25.170 SandBox[5454:396935] 2、获取Documents路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/71E260C9-4F3D-49CA-9482-62949E2F7404/Documents 2015-10-24 21:33:25.171 SandBox[5454:396935] 3、获取Caches路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/71E260C9-4F3D-49CA-9482-62949E2F7404/Library/Caches 2015-10-24 21:33:25.171 SandBox[5454:396935] 4、获取tmp路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/71E260C9-4F3D-49CA-9482-62949E2F7404/tmp/ 2015-10-24 21:33:25.171 SandBox[5454:396935] 5、获取bundlepath=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Bundle/Application/EDDB6D95-41A2-4B8A-A9D1-BB0B6EEE875F/SandBox.app */ //运行结果2 /* 2015-10-24 21:34:04.102 SandBox[5467:397522] 1、获取沙盒根路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/B1D5E3A8-F6B9-45A0-B305-2DC795A8DA02 2015-10-24 21:34:04.102 SandBox[5467:397522] 2、获取Documents路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/B1D5E3A8-F6B9-45A0-B305-2DC795A8DA02/Documents 2015-10-24 21:34:04.103 SandBox[5467:397522] 3、获取Caches路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/B1D5E3A8-F6B9-45A0-B305-2DC795A8DA02/Library/Caches 2015-10-24 21:34:04.103 SandBox[5467:397522] 4、获取tmp路径=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Data/Application/B1D5E3A8-F6B9-45A0-B305-2DC795A8DA02/tmp/ 2015-10-24 21:34:04.103 SandBox[5467:397522] 5、获取bundlepath=/Users/lining/Library/Developer/CoreSimulator/Devices/4BE9A476-F866-47D0-AA53-F4C3D57452F2/data/Containers/Bundle/Application/75160F05-07EB-4988-A2CF-7BB4A0C6DB69/SandBox.app */
2、iOS8后的变化
在iOS8之前,沙盒中的document、cache、tmp之后,下一次模拟器或真机无论怎样重启,这具体的路径是固定的了。在iOS8之后,苹果考虑到安全因素,应用每一次重启,沙盒路径都动态的发生了变化。iOS8沙盒的路径发生了变化,但是并不代表原来沙盒路径中的数据发生了变化;同时,也并不代表路径会越来越多。苹果会把旧路径中的数据转移到新路径中。旧路径也会被苹果毫无保留的删除,只保留最新的路径。3、Bundle的使用
Bundle是一个内部结构按照标准规则组织的特殊目录,包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in)。iOS的应用都是通过bundle进行封装的,对应的bundle类型是Application类型。Finder会把这个bundle当做一个文件显示,因为这个bundle自身也是一个package,而Mac系统会把所有的package当做一个文件来对待,显示给用户,从而防止用户误操作导致程序文件损坏或丢失。很多资源文件加载大多是通过bundle来进行的了,从bundle进行文件加载实际就是通过应用自己所在的文件夹进行加载。在iOS8中,家路径和Bundle路径进行了分离,在模拟器中,Bundle包路径和Documentlibrary所在的路径完全不一样了。
在项目上右键,add图片文件图片文件myPic.png。
使用bundle获取程序里的一张图片,并显示到View上。新建一个Single View Application,并在加入viewDidLoad方法里加入如下代码
//通过使用下面的方法得到程序的main bundle
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *imagePath = [mainBundle pathForResource:@"myPic” ofType:@"png"];
NSLog(@"%@", imagePath);
UIImage *image = [[UIImage alloc]initWithContentsOfFile:imagePath];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view addSubview:imageView];
代码下载(Xcode7.0.1)
有问题请联系博主,邮箱:nathanlee1987@aliyun.com
著作权声明:本文由http://my.csdn.net/Nathan1987_原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
相关文章推荐
- iOS || ISO
- 蓝懿ios 技术内容和心得 10。24
- iOS——LLVM、Clang浅析
- IOS开发-C基础2
- iOS NSUserDefaults 之最简单存取数据 小Demo
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十九)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十九)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十九)
- #在蓝懿学习iOS的日子#第一个练习日
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十八)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十八)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十八)
- xml解析 iOS
- ios开发系列之XML解析和JSON解析数据
- ios学习之spritekit的简单学习
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十七)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十七)