NSBundle

沙盒

iOS中的沙盒机制是一种安全体系。
每个iOS程序都有一个独立的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒。
应用必须待在自己的沙盒里,其他应用不能访问该沙盒。
所有的非代码文件都要保存在此,例如属性文件plist、文本文件、图像、图标、媒体资源等。
沙盒是用来存入缓冲区的,APP关掉,缓存被自动清理。

沙盒目录结构

(1)/AppName.app

应用程序的程序包目录,包含应用程序的本身。
由于应用程序必须经过签名,所以不能在运行时对这个目录中的内容进行修改,否则会导致应用程序无法启动。

(2)/Documents/

保存应用程序的重要数据文件和用户数据文件等。
用户数据基本上都放在这个位置(例如从网上下载的图片或音乐文件),该文件夹在应用程序更新时会自动备份,在连接iTunes时也可以自动同步备份其中的数据

(3)/Library

/Library目录:这个目录下有两个子目录:
可创建子文件夹。可以用来放置您希望被备份但不希望被用户看到的数据。该路径下的文件夹,除Caches以外,都会被iTunes备份

/Library/Caches(缓存)

保存应用程序使用时产生的支持文件和缓存文件(保存应用程序再次启动过程中需要的信息),还有日志文件最好也放在这个目录。iTunes 同步时不会备份该目录并且可能被其他工具清理掉其中的数据。

/Library/Preferences (偏好)

保存应用程序的偏好设置文件(使用 NSUserDefaults( 这个就是放这) 类设置时创建,不应该手动创建;连iTunes可备份,在应用程序更新时会自动备份;plist文件就放在此处)。

(4)/tmp/

保存应用运行时所需要的临时数据,该路径下的文件不会被iTunes备份。iphone 重启时,会自动清除该目录下所有文件;例如录制视频完成后是放在/temp/;所以应该将视频文件从该文件夹转移到相册中,否则视频文件就会被系统清理掉

API

获取某个路径下的bundle(项目中有新建的bundle)

    NSString *strResourcesBundle = [[NSBundle mainBundle] pathForResource:@"Resources" ofType:@"bundle"];

    NSBundle *aBundle = [NSBundle bundleWithPath:strResourcesBundle];

    NSBundle *bBundle =  [[NSBundle alloc] initWithPath:strResourcesBundle];

根据一个特殊的class或者标记 获取NSBundle

+ (NSBundle *)bundleForClass:(Class)aClass;

+ (nullable NSBundle *)bundleWithIdentifier:(NSString *)identifier;

加载资源,如果有错误的话,会放置错误信息

- (BOOL)preflightAndReturnError:(NSError **)error

- (BOOL)loadAndReturnError:(NSError **)error

获取bundle 辅助的path

- (NSString *)pathForAuxiliaryExecutable:(NSString *)executableName;

推荐阅读:

http://www.cocoachina.com/bbs/read.php?tid-319712.html

http://www.jianshu.com/p/34cda6a121db

http://blog.youkuaiyun.com/shx_yi/article/details/8755415

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值