iOS NSBundle文件与nib文件——iOS 编码复习(十)
来源:互联网 发布:网络攻击追踪溯源 编辑:程序博客网 时间:2024/06/16 13:53
@NSBundle包,是一种特定的文件类型,一个主要作用是获取Resources文件中的资源
bundle是一个目录,其中包含了程序会使用的资源,这些资源包含了如图像、声音、编译好的代码、nib文件;cocoa提供了一个类NSBundle。我们的程序是一个bundle。在finder中,一个应用程序看上去和其他文件没有什么区别,但是实际上它是一个包含了nib文件、编译代码、以及其他资源的目录。我们把这个目录叫做程序的main bundle。
[NSBunde mainBundle]是获得NSBundle的一个单例对象,它已经设置了默认的resourcePath,也就是你的app打包后的路径,[[NSBundle mainBundle] resourcePath]就是获得完整的打包后的app路径。
iOS程序有自己的文件访问机制,只能在自己的沙盒内。
UIImage * img = [UIImage imageNamed:@"icon.png"];
这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题。因为它在内部已经偷偷把路径转化为相对路径了。
接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路径的问题。
NSFileHandle * fileHandle = [NSFileHandle fileHandleForReadingAtPath:@"test.txt"];
这样系统是找不到文件的,因为这里要的是文件的绝对路径。这个时候就需要NSBundle了,这个类专门用来负责路径转化等功能。iOS项目虽然在Xcode下可以创建文件夹结构,但是实际上它是没有文件结构的概念的,那我们要加载这种文件,完整的代码应该是这样:
方法1:
NSString * newPath = [NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle] resourcePath],@"/",path];
NSFileHandle * filePath = [NSFileHandle fileHandleForReadingAtPath:newPath];
方法2:
NSString * newPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"txt"];
NSFileHandle * filePath = [NSFileHandle fileHandleForReadingAtPath:newPath];
这里就知道NSBundle的作用了。
Xib文件的加载:
1: NSArray * xibArr = [[NSBundlemainBundle]loadNibNamed:@"XXXXIdentifier"owner:niloptions:nil];
这个方法会创建xib中的所有对象,并且降对象放在objs数组中,
2:UINib* nib = [UINibnibWithNibName:@"XXXXIdentifier"bundle:[NSBundlemainBundle]];
NSArray * objs = [nibinstantiateWithOwner:niloptions:nil];
xib文件编译成功就是nib文件,它比我们用代码自定义控件节省两个步骤:1、初始化;2、在layoutSubviews中设置frame。
xib的加载过程:首先调用-(instancetype)initWithCoder:(NSCoder *)aDecoder而不是调用initWithFrame方法,之后调用- (void)awakeFromNib,控件初始化都应该写在这里
- iOS NSBundle文件与nib文件——iOS 编码复习(十)
- iOS Nib文件与手动编码初始化区别
- iOS 沙盒与文件机制——iOS 编码复习(九)
- iOS 使用nib文件(一)
- iOS 使用nib文件(二)
- iOS菜鸟学习——通过nib文件自定义Cell
- IOS 应用Nib文件分析
- iOS验证nib文件是否存在
- ios 将Xib 编为 Nib文件
- 【IOS 开发学习总结-OC-36】★文件 I/O——NSFileHandle&NSURL&NSBundle
- 【精】iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)
- iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)
- iOS NSBundle(一)
- ios开发中改变nib文件中的控件大小
- 【IOS】分镜和nib文件的差别
- iOS一个类可以关联多个nib文件
- ios 读写文件-复习篇
- XCode ios iphone 资源文件管理 NSBundle mainBundle
- IOS 类和方法
- POJ 1236 强联通分量
- Android性能调优
- 用if语句随机生成十个数,排序
- 原生js实现简洁的返回顶部组件
- iOS NSBundle文件与nib文件——iOS 编码复习(十)
- mybatis级联查询
- Chapte3---使用字符串
- 转向移动端UI/UX设计有哪些必知的设计要点
- UnityEditor 如何将一个资源文件夹下的对象拖曳赋值到文件夹外的某个对象组件属性中
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
- VR体验优化
- jquery checkbox勾选/取消勾选的诡异问题
- Maven依赖Scope标签用法