iOS开发10-iOS SandBox(沙盒或沙盘)介绍、路径获取

news/2024/12/29 15:20:38/

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-62949E2F74042015-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/Documents2015-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/Caches2015-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-2DC795A8DA022015-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/Documents2015-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/Caches2015-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包路径和Document library所在的路径完全不一样了。
在项目上右键,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_原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

http://www.ppmy.cn/news/362589.html

相关文章

PL3323BS

PL3323BS是款恒流/恒压原边控制的高性能离线反激式开关电源&#xff0c;仅需少数的外部元件&#xff0c;PL3323BS内部集成了包括功率MOSFET以及原边控制模块等高压功率调节器。PL3323BS适用于小于7.5W的AC/DC应用场合&#xff0c;其无需光耦以及次级控制电路就能实现高精度的恒…

R语言 tidyverse系列学习笔记(系列4)PlantGrowth - percentage table

本篇学习数据分析&#xff0c; Excel 表格制作 Task&#xff1a; 创建一个 行 百分比 表格 row percentage table 先看一下 PlantGrowth 数据集 library(dplyr)data("PlantGrowth") view(PlantGrowth)给数据集新加一列 weight_cat &#xff0c;并用 case_when 自定…

centos7 网卡启动不了,修复方法

刚刚装好的虚拟机突然不能上网了&#xff0c;报错很诡异&#xff0c;具体报错如下&#xff1a; /etc/init.d/network restart Restarting network (via systemctl): Job for network.service failed because the control process exited with error code. See "systemctl…

Discovering versions from the identity service failed when creating the password plugin. Attempting

报错信息&#xff1a; [rootcontroller keystone]# openstack user show admin Discovering versions from the identity service failed when creating the password plugin. Attempting to determine version from URL. Unable to establish connection to http://controll…

(一)Open Stack(M)----基础环境搭建

感谢指剑大佬发表的博客与视频&#xff01;感谢所 爱大佬的支持&#xff01; Open Stack简介 1.虚拟机配置 一般都是要求每个节点都是4核4G&#xff0c;菜鸡我内存不足。 主机名配置网络controller4核4G192.168.100.10&#xff08;内网&#xff09;192.168.200.10&#xff…

第三方SSD问题引起电脑频繁重启问题IONVMeController.cpp:5499

电脑硬盘问题。一般第三方硬盘容易出这类问题。 固态硬盘接触不良&#xff0c;下固态硬盘&#xff0c;重新固定安装就好了。我的电脑一周出现两次这样的问题。出现这样的问题&#xff0c;可以换一个固态硬盘转接头&#xff0c;避免电脑来回移动震动电脑。 我的电脑是Macbook Ai…

基于springboot的学生选课系统

随着高校学生数量的不断增加&#xff0c;教务系统的数据量也不断增加。以前的选课方法是人工统计。这种方法虽然简单直接&#xff0c;但是造成教务处处理数据的繁重性和学生选课的盲目性。为了方便教务处的工作&#xff0c;以及每个学生能够更好的选择自己所喜欢的课程。针对学…

301、302、303、307状态码的区别

301永久重定向 302临时重定向&#xff0c;HTTP1.0的状态码&#xff0c;HTTP1.1也有保留。 如果client向server发送post请求。 server返回URL和302。 如果用户确认&#xff0c;client发送post请求。&#xff08;但实际情况是&#xff0c;很多浏览器都不问问用户&#xff0c;…