初学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"即可。

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

from:http://www.cnblogs.com/BigPolarBear/archive/2012/03/28/2421802.html

最新文章

  1. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
  2. Lua数据持久化
  3. CentOS 7 启动、重启、chkconfig等命令已经合并为systemctl
  4. js-JavaScript高级程序设计学习笔记10
  5. HTML5自学笔记[ 6 ]data自定义数据
  6. VS2013 JS 跟踪
  7. Android实现图片裁切
  8. PHP获取APP客户端的IP地址的方法
  9. Codeforces Round #198 (Div. 2) —— B
  10. autotrace显示Statistics很多信息为0(转)
  11. vs2013 linq to mysql
  12. js动画学习(一)
  13. SQL Server不能通过外部IP访问,解决方法
  14. POJ_1269_Intersecting Lines_求直线交点
  15. JavaScript构造函数原理
  16. 三十六、Linux 线程——线程基本概念及线程的创建和终止
  17. jar运行
  18. linux重启服务的脚本命令
  19. C语言中字符输入问题
  20. HTML快速入门(一)

热门文章

  1. Servlet拦截匹配规则可以自已定义,拦截哪种URL合适?
  2. EntityFramework数据库配置(code frist)
  3. 简单的GTK窗体搭建
  4. Python基础(四)——迭代器/对象,生成器
  5. 解决eclipse js文件报错(转)
  6. uoj#402. 【CTSC2018】混合果汁(主席树+二分)
  7. 7.Python初窥门径(数据类型补充,操作及注意事项)
  8. LCS最大公共子序列【转载】
  9. JS高级学习历程-10
  10. Python-11-循环