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 使用相关推荐

  1. iOS获取设备和APP权限信息(内含plist文件的读写)

    文章目录 前言 获取设备当前的各种信息 获取APP能获取到的权限信息(内含plist文件的读写) 2019.11.04 更新 前言 下面各种获取到的信息分为了两大类,一种是获取APP载体设备当前的各种 ...

  2. iOS开发基础知识--碎片19

    iOS开发基础知识--碎片19  1:键盘事件顺序 UIKeyboardWillShowNotification // 键盘显示之前 UIKeyboardDidShowNotification // ...

  3. uni-app相关知识积累

    uni-app笔记 快捷键 引入iconfont 本地引用 远程引用 使用iconfont 动态使用iconfont html获取用户IP地址和所属国家信息 html获取浏览器语言 html动态改变显 ...

  4. DCloud Native.js示例汇总

    Native.js虽然强大和开放,但很多web开发者因为不熟悉原生API而难以独立完成. 这篇帖子的目的就是汇总各种写好的NJS代码,方便web开发者. 众人拾柴火焰高,有能力的开发者多多提交NJS代 ...

  5. 一篇文章教你看懂.mlmodle的方法头文件

    前言 最近在研究苹果的core ml模型,应该说模型本身已经封装的非常完善,训练模型,提供的方法接口都是现成的 这篇博客主要是从头到尾解读.mlmodel生成的方法头文件 其实认真钻读一篇代码文件是一 ...

  6. iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)

    2019独角兽企业重金招聘Python工程师标准>>> iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便 ...

  7. iOS NSBundle常用方法及解释

    1.使用类方法创建一个NSBundler对象 + (NSBundle *)mainBundle; eg: [NSBundle mailBundle]; 2.使用路径获取一个NSBundle对象,这个路 ...

  8. iOS:NSBundle的具体介绍

    NSBundle介绍:它是一个单例类,用来加载资源 bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-i ...

  9. iOS学习之NSBundle介绍和使用

    bundle是一个目录,其中包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle, cocoa提供了类NSBun ...

最新文章

  1. CMake常见指令总结
  2. Vs2008不能调试的问题
  3. 《JavaScript应用程序设计》一一2.17 回调函数
  4. “约见”面试官系列之常见面试题之第九十一篇之简述Vue的生命周期适用于哪些场景(建议收藏)
  5. 微型计算机硬盘为什么要分区,为什么懂电脑的人,都说硬盘不需要分区?看完你就知道了...
  6. (王道408考研操作系统)第一章计算机系统概述-第一节1:操作系统基本概念以及目标和功能
  7. Spring-Cloud的版本是如何定义的
  8. vim golang 插件
  9. 关于git远程版本库的一些问题之解决
  10. labview圆环里实物动画图形_LabVIEW编程技巧:功能强大的变体数据类型用法
  11. 连接spark集群Windows环境搭建
  12. dgvHelper,xmlHelper,inputbox(仿vba),Evaluate(vba中函数应用于C#)
  13. 紫外分光光度计与紫外可见分光光度计的区别是什么?
  14. qt web混合编程_Qt+VS混合编程教程
  15. 地区 经纬度 json 数据
  16. layui模板引擎嵌套
  17. 收藏的经典影视视频下载地址
  18. 计算机理论什么是信道容量,(信道容量知识总结.doc
  19. Mogafx澳元技术性预测
  20. 网络采集和数据分析如何帮助您实现业务增长?

热门文章

  1. Cisco PBR Case2
  2. eclipse里面自动添加get和set方法
  3. 局域网共享设置——权限问题
  4. Ubuntu下挂载U盘
  5. Nginx 限制并发连接数。
  6. Active Directory 灾难恢复
  7. python工作目录_python获取当前工作目录
  8. 数控直线工作台直线控制系统的simulink仿真
  9. 消息长度_nsq消息队列源码分析
  10. 如何计算像素当量_「轴承知识」如何通过静承载能力选择轴承