经常会有需要从应用中搜索并读取一个文件或图片。这时候就会用到如下的语句:

NSString *path = [[NSBundle mainBundle] pathForResource:@"AddressFields" ofType:@"plist"];

通过如上的语句获取到路径之后,就可以再通过各种方法解析或显示文件了

NSMutableDictionary *registerConfig = [NSMutableDictionarydictionaryWithContentsOfFile:path];

上面的方法中有一个对象是以前开发桌面程序没有看到过的:Bundle。那这次就来说下Bundle吧。

1. 定义

Bundle是一个文件夹,一个包含了可执行代码,图片,音乐的文件夹。根据wiki(http://en.wikipedia.org/wiki/Bundle_(NEXTSTEP)) ,应该是一个Apple专属的名词?作为对比,Windows经常将文件在编译时包含在一个可执行文件(exe)或DLL里了。

Bundle作为一个文件夹的有一个好处应该是文件结构很清晰?有人提问过怎么做一个iOS的asset bundle,答案超级简单:

创建一个文件夹,把文件添加进去,重命名为 bundle名字.bundle

颇有将一个大象装到冰箱里去的感觉。

2. 组成

Bundle下有一个运行时的配置文件:Info.plist。资源文件放在Resources文件夹下。

如果要实现多语言的话,应该只需要往Resources下更新一个对应语言的资源文件就可以了?

3. mainBundle

每个应用必然有一个mainBundle。这个Bundle中包含了应用的代码。

在程序加载的时候,首先会载入mainBundle里的马上需要执行的代码和资源,然后才会延迟或动态加载mainBundle或其他bundle中的其他代码和资源。

4. Info.plist

Info.plist是存放运行时读取的键值对的XML文件。

如果要读取Info.plist里的值,可以通过:

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

来直接获取,例如:

NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

所有iOS下的Info.plist里的值,可以参考:http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html%23//apple_ref/doc/uid/TP40009252-SW1

iOS学习笔记10 - Bundle和Info.plist的更多相关文章

  1. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  2. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  3. iOS学习笔记-地图MapKit入门

    代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...

  4. IOS学习笔记25—HTTP操作之ASIHTTPRequest

    IOS学习笔记25—HTTP操作之ASIHTTPRequest 分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报 iosios5网络wrapper框架新浪微博 A ...

  5. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  6. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  7. IOS学习笔记48--一些常见的IOS知识点+面试题

      IOS学习笔记48--一些常见的IOS知识点+面试题   1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...

  8. iOS学习笔记22-推送通知

    一.推送通知 推送通知就是向用户推送一条信息来通知用户某件事件,可以在应用退到后台后,或者关闭后,能够通过推送一条消息通知用户某件事情,比如版本更新等等. 推送通知的常用应用场景: 一些任务管理APP ...

  9. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

随机推荐

  1. stylus使用文档总结:选择器+变量+插值+运算符+混合书写+方法

    建立好项目后我们来安装stylus npm install stylus stylus-loader --save-dev 这样就安装上了stylus. 接下来就可以使用了,使用方式分两种.一种是在. ...

  2. 使用kubeadm部署Kubernetes v1.13.3

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: 1. 安装要求 在开始之前,部署Kubernetes集群 ...

  3. 约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题

    public class Solution { // 左神解法,本题本质还是报数为m-1的倍数的人死.求最后一个活着的人是初始时候的哪个人       /* 报数(A) 实际人员编号(B)      ...

  4. webDriver API——第11部分Remote WebDriver

    The WebDriver implementation. class selenium.webdriver.remote.webdriver.WebDriver(command_executor=' ...

  5. IOS Exception 1(libc++abi.dylib: terminating with uncaught exception of type NSException)

    2014-08-05 22:18:46.455 SwiftUI[1329:40871] -[_TtC7SwiftUI14MViewControler clickMe]: unrecognized se ...

  6. marquee.js

      图片无缝滚动工具类 CreateTime--2018年3月7日17:11:03 Author:Marydon /** * 图片无缝滚动 * @description * 将要滚动的图片复制一份作为 ...

  7. iOS UITableView表视图滚动隐藏UINavigationController导航栏

    UITableView 继承于UIScrollView 所以UIScrollView 的代理方法相同适用于UITableView 中 隐藏导航栏的方法为: self.navigationControl ...

  8. 13-spring学习-class类型表达式

    Class表达式 spring中对于class反射机制也有自己的处理. 1,class::使用T(类名)的形式可以取得一个指定泛型类型的Class对象. 范例: package com.Spring. ...

  9. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...

  10. mongodb进阶三之mongodb管理

    http://blog.csdn.net/stronglyh/article/details/46827141 平时的开发环境win比較多啊,但生产环境要放到unix环境上 一:命令 安装就不少了,网 ...