IOS 之 NSBundle 使用
2019独角兽企业重金招聘Python工程师标准>>>
IOS开发的时候,经常看到这样的代码,
[[NSBundle mainBundle] pathForResource:@"someFileName" ofType:@"yourFileExtension"];
[YourViewController initWithNibName:"YourViewController" bundle:nil];
一开始还不是很理解,通过google,慢慢的知道bundle在ios中的作用。
Bundle是什么呢?bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.bundle中的有些资源可以本地化.例如,对于foo.nib,我们可以有两个版本: 一个针对英语用户,一个针对法语用户. 在bundle中就会有两个子目录:English.lproj和French.lproj,我们把各自版本的foo.nib文件放到其中. 当程序需要加载foo.nib文件时,bundle会自动根据所设置的语言来加载.
//在程序中获得main bundle
NSBundle bundle = [NSBundle mainBundle]; //很简单
//一般我们通过这种方法来得到bundle.如果你需要其他目录的资源,可以指定路径来取得bundle
NSBundle otherBundle = [NSBundle bundleWithPath:@"~/.myApp/Good.bundle"];
//一旦我们有了bundle,就可以访问其中的资源文件了。
NSString path = [otherBundle pathForImageResource:@"img"];
NSImage img = [[NSImage alloc] initWithContentsOfFile:path];
//bundle中可以包含一个库. 如果我们从库得到一个class, bundle会连接库,并查找该类:
Class newClass = [otherBundle classNamed:@"Person"];
id person = [[newClass alloc] init];
//如果不知到class名,也可以通过查找主要类来取得
Class aClass = [otherBundle principalClass];
id classInstance = [[aClass alloc] init];
//可以看到, NSBundle有很多的用途.在这章中, NSBundle负责(在后台)加载nib文件. 我们也可以不通过NSWindowController来加载nib文件, 直接使用NSBundle:
BOOL flag = [NSBundle loadNibNamed:@"ViewController" owner:someObject];
//注意噢, 我们指定了一个对象someObject作为nib的File”s Owner
获取XML文件
NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"re" ofType:@"xml"];
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];
转载于:https://my.oschina.net/CarlHuang/blog/135454
IOS 之 NSBundle 使用相关推荐
- iOS获取设备和APP权限信息(内含plist文件的读写)
文章目录 前言 获取设备当前的各种信息 获取APP能获取到的权限信息(内含plist文件的读写) 2019.11.04 更新 前言 下面各种获取到的信息分为了两大类,一种是获取APP载体设备当前的各种 ...
- iOS开发基础知识--碎片19
iOS开发基础知识--碎片19 1:键盘事件顺序 UIKeyboardWillShowNotification // 键盘显示之前 UIKeyboardDidShowNotification // ...
- uni-app相关知识积累
uni-app笔记 快捷键 引入iconfont 本地引用 远程引用 使用iconfont 动态使用iconfont html获取用户IP地址和所属国家信息 html获取浏览器语言 html动态改变显 ...
- DCloud Native.js示例汇总
Native.js虽然强大和开放,但很多web开发者因为不熟悉原生API而难以独立完成. 这篇帖子的目的就是汇总各种写好的NJS代码,方便web开发者. 众人拾柴火焰高,有能力的开发者多多提交NJS代 ...
- 一篇文章教你看懂.mlmodle的方法头文件
前言 最近在研究苹果的core ml模型,应该说模型本身已经封装的非常完善,训练模型,提供的方法接口都是现成的 这篇博客主要是从头到尾解读.mlmodel生成的方法头文件 其实认真钻读一篇代码文件是一 ...
- iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)
2019独角兽企业重金招聘Python工程师标准>>> iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便 ...
- iOS NSBundle常用方法及解释
1.使用类方法创建一个NSBundler对象 + (NSBundle *)mainBundle; eg: [NSBundle mailBundle]; 2.使用路径获取一个NSBundle对象,这个路 ...
- iOS:NSBundle的具体介绍
NSBundle介绍:它是一个单例类,用来加载资源 bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-i ...
- iOS学习之NSBundle介绍和使用
bundle是一个目录,其中包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle, cocoa提供了类NSBun ...
最新文章
- CMake常见指令总结
- Vs2008不能调试的问题
- 《JavaScript应用程序设计》一一2.17 回调函数
- “约见”面试官系列之常见面试题之第九十一篇之简述Vue的生命周期适用于哪些场景(建议收藏)
- 微型计算机硬盘为什么要分区,为什么懂电脑的人,都说硬盘不需要分区?看完你就知道了...
- (王道408考研操作系统)第一章计算机系统概述-第一节1:操作系统基本概念以及目标和功能
- Spring-Cloud的版本是如何定义的
- vim golang 插件
- 关于git远程版本库的一些问题之解决
- labview圆环里实物动画图形_LabVIEW编程技巧:功能强大的变体数据类型用法
- 连接spark集群Windows环境搭建
- dgvHelper,xmlHelper,inputbox(仿vba),Evaluate(vba中函数应用于C#)
- 紫外分光光度计与紫外可见分光光度计的区别是什么?
- qt web混合编程_Qt+VS混合编程教程
- 地区 经纬度 json 数据
- layui模板引擎嵌套
- 收藏的经典影视视频下载地址
- 计算机理论什么是信道容量,(信道容量知识总结.doc
- Mogafx澳元技术性预测
- 网络采集和数据分析如何帮助您实现业务增长?