收藏收藏(关于bundle的一些片面化讲解)

初学iOS开发的同学,不管是自己写的,还是粘贴的代码,或多或少都写过下面的代码

[[NSBundle mainBundle] pathForResource:@"someFileName" ofType:@"yourFileExtension"];

[YourViewController initWithNibName:"YourViewController" bundle:nil];

可是你知道这里的bundle到底是个啥玩意呢?!

Bundle简单地讲,就是一个内部结构按照标准规则组织的特殊目录

iOS的应用都是通过bundle进行封装的,对应的bundle类型是Application类型,平时我们通过XCode编译出来的
Target(即我们开发的应用),其实就是一个Application类型bundle,即一个文件夹!但是Finder会把这个bundle当做一个
文件显示给我们,其实是因为这个bundle自身也是一个package,而Mac系统会把所有的package当做一个文件来对待,显示给用户,从而防
止用户误操作导致程序文件损坏或丢失。至于bundle和package有什么区别,就不在这里展开说明了,本文后面所说的bundle都会被Mac系统
视为package。

现在我们已经知道了,原来我们开发的应用程序,最后都会成为一个bundle,那么就不难理解为什么很多资源文件加载大多是通过bundle来进行的了,从bundle进行文件加载实际就是通过应用自己所在的文件夹进行加载。

不过紧接着我们又会产生好几个疑问:

1 为什么不直接使用文件路径的方式来读取资源文件呢?

2 为什么还会存在pathForResource:ofType:这个方法,难道说我们在开发的时候还不能确定这些文件在哪儿吗?

事实上,我们是可以使用文件系统的路径进行资源文件的访问的,不过当我们要进行App的国际化的时候,我们需要自己去实现不同语言、地区情况下加载对应的文件,而在部分资源文件公用,部分需要国际化的时候,对开发人员来讲,代码维护起来尤为混乱。

而bundle对iOS开发者来讲,最大的方便就是可以非常简单地让自己的应用国际化,在不同的语言不同的地区,加载不同的资源文件,显示不同的语
言文字,而实现这些只需要我们严格按照bundle的要求进行资源文件的存放即可,而不需要写大量代码判断地区语言。遵循的方法也很简单,只需要我们创建
对应的"本地化文件夹"即可,例如我们要同时让图片"pic.png"在中文和英文下显示不同的内容,只需要创建两个本地化文件夹zh.lproj和
en.lproj,分别放入同名但内容不同的"pic.png"即可。

关于如何让自己的应用国际化的具体方法,将在之后的文章进行描述。

时间: 2024-08-14 06:01:33

收藏收藏(关于bundle的一些片面化讲解)的相关文章

前端开发学java之图片化讲解

java.io.serialization  : key words:  marker interface.

《鸡啄米C++编程入门系列》系列技术文章整理收藏

<鸡啄米C++编程入门系列>系列技术文章整理收藏 收藏整理鸡啄米C++编程入门系列文章,供个人和网友学习C++时参考 1鸡啄米:C++编程入门系列之前言 2鸡啄米:C++编程入门系列之一(进制数) 3鸡啄米:C++编程入门系列之二(原码.反码与补码) 4鸡啄米:C++编程入门系列之三(VS2010的使用介绍) 5鸡啄米:C++编程入门系列之四(数据类型) 6鸡啄米:C++编程入门系列之五(运算符和表达式) 7鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构) 8鸡啄米:C++编程入

收藏学习网站

收藏收藏 电子书和资源查找:www.java1234.com/,还有各类的百度网盘搜索工具 程序员都知道的GitHub:github.com/ 博客平台:segmentfault.com/ 博客平台:juejin.im/timeline 菜鸟教程(前端):www.runoob.com/ 娱乐&学习网站:www.bilibili.com/ v2ex(技术和工作):www.v2ex.com/ 查问题:stackoverflow.com/ 科技新闻资讯类:36kr.com/ 学习&娱乐:www.

成化青花宫碗的艺术:宫葵缱芳华

01 秋葵宫碗 05 大英博物馆百合碗 09 雍正宫碗 梁晓新 2013年10月8日,香港苏富比举行了有史以来规模最为庞大的中国艺术品拍卖会,一件盈盈在握的青花秋葵纹小碗,以清雅迷人的艺术芳华征服了所有在场的中外人士,最终以1.41亿港币成交,成为此届香港苏富比40周年庆典拍卖会上最耀眼的明珠.(01) 区区一个口径仅为14.5厘米的青花小碗,仅用了不到三分钟的时间,就缔造出明代瓷器世界第二之高价,烟囱增高,http://www.66gkw.com/Product-171.html:,再一次为神

马化腾的父亲是盐田港公司上市董事,柳传志的父亲是国贸委高层,这就是阶层,你呢?无名人士罢了

https://www.ixigua.com/i6769195323710505483/穷的原因真的是因为懒吗?看完之后你就会明白,没有那么简单! https://m.pedaily.cn/news/409231https://people.pedaily.cn/201702/20170223409231.shtml马化腾的父亲是盐田港公司上市董事,柳传志的父亲是国贸委高层,这就是阶层,你呢?无名人士罢了 马化腾的父亲是盐田港公司上市董事,柳传志的父亲是国贸委高层,这就是阶层,你呢?无名人士罢了

《2015最新Android基础入门教程》完结散花~

<2015最新Android基础入门教程>完结散花~ 标签(空格分隔): 反思小结 引言: 从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析-由于个人能力的局限, 虽然

LabVIEW 吸星大法 - 看见的好东西都是我的(上篇)

前言 写了多年的LabVIEW程序,你是否面临这样的问题 总是在做一些重复的工作,感觉很没有意思: 总在不停的写代码,做类似的控件,实现相同的功能,丝毫没有成就感: 总在天加班,没有时间去提高自己; 你也知道简单的重复并不能带来效率的提高,却不知道走向何方,无奈而又焦急着? 小黑今天带你聊一聊LabVIEW吸星大法,让你在工作中越来越有效率,体会一切皆可掌控的妙感~ 记住,我们的口号是 : 告别重复造车,你的就是我的,万物皆为我所用~ 正文 学习LabVIEW是在初期是一个很吸引人的事情,它让你

开源中国iOS客户端学习

开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html 开源中国iOS客户端学习——序 说到这款开源软件就得提到她的娘家了--开源中国社区: 开源中国社区简介:开源中国 www.oschina.net 成立于2008年8月,是目前中国最大的开源技术社区.传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现.使用.并交流开源技术的平台.目前开源中国社区已收

当今游戏大作share的特性大盘点

极品游戏制作时的考虑要素大盘点 不知不觉入坑Steam已近4年,虽然说Steam的毒性让很多人走向一条不归路,但是想我这样即使"中毒"还是很快乐很感恩的.那么本期文章就谈谈我对其中一些优秀作品的共性的一个总结,共列举了共31个特性,其中甚至还有一些还未实现但我很期望的新特性(一定要看到最后哦).这些特性共同成就了一部部优秀的游戏作品,让他们走向IGN的排行榜首页.本文全为知识共享,没有商业意图,那下面就开始吧(排名不分先后). 1.3D画面 一个主流的电子游戏,你首先得是3D游戏吧,至