iOS学习笔记10 - Bundle和Info.plist
经常会有需要从应用中搜索并读取一个文件或图片。这时候就会用到如下的语句:
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的更多相关文章
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
- iOS学习笔记-地图MapKit入门
代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...
- IOS学习笔记25—HTTP操作之ASIHTTPRequest
IOS学习笔记25—HTTP操作之ASIHTTPRequest 分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报 iosios5网络wrapper框架新浪微博 A ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- IOS学习笔记48--一些常见的IOS知识点+面试题
IOS学习笔记48--一些常见的IOS知识点+面试题 1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...
- iOS学习笔记22-推送通知
一.推送通知 推送通知就是向用户推送一条信息来通知用户某件事件,可以在应用退到后台后,或者关闭后,能够通过推送一条消息通知用户某件事情,比如版本更新等等. 推送通知的常用应用场景: 一些任务管理APP ...
- iOS学习笔记16-数据库SQLite
一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...
随机推荐
- Net编程 详解DataTable用法【转】
http://www.diybloghome.com/article/16.html DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据 ...
- http://my.oschina.net/lenglingx/blog/205269
http://my.oschina.net/lenglingx/blog/205269 http://www.2cto.com/os/201402/281465.html 单点登录原理: http:/ ...
- DevExpress 小计 GridControl 隔行换行
摘自: http://www.cnblogs.com/yuerdongni/archive/2012/09/08/2676753.html 1. 如何解决单击记录整行选中的问题 View->Op ...
- 页面优化——js异步载入
同步载入 在介绍js异步载入之前.我们先来看看什么是js同步载入.我们平时最常使用的就是这样的同步载入形式: <script src="http://XXX.com/script.js ...
- python处理csv
python处理csv 学习了:https://blog.csdn.net/qq_33363973/article/details/78783481 竟然pip install csv 无果: 学习 ...
- Linux内核project导论——linux学习和职业曲线(刚開始学习的人,中级,高级都可參考)
Linux世界介绍 给自己定级 门外汉: 不会安装操作系统 不会用虚拟机(安装和使用) 入门级: 熟悉常见的发行版,甚至装过而且能用一些特殊发行版(比如kali)做过一些简单的图形界面的使用. 会一些 ...
- php 获取ip地址方法
function getIP() { $ip=""; if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $myip = $_SERVER['HTTP_ ...
- win7配置两个tomcat(8 & 7)
背景如下: 电脑中原先tomcat版本是tomcat8,现在要再在其中另配置一个tomcat7,原先tomcat8的配的端口是8089 步骤如下: 1.官网下载tomcat7压缩包解压 2.修改D:\ ...
- django inspectdb
使用inspectdb --通过已有数据库表生成 model.pyinspectdb辅助工具检查你的settings文件指向的数据库,决定你表示你的表的Django模型并打印Python模型代码到标 ...
- import { Subject } from 'rxjs/Subject';
shared-service.ts import { Observable } from 'rxjs/Observable'; import { Injectable } from '@angular ...