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 ...
随机推荐
- 使用JEECG过程中的问题汇总(持续更新)
1.首次启动Tomcat服务时,控制台信息提示请使用SQL Server 2005或更高版本. <dependency> <groupId>org.jeecgframework ...
- [Python爬虫] 之十五:Selenium +phantomjs根据微信公众号抓取微信文章
借助搜索微信搜索引擎进行抓取 抓取过程 1.首先在搜狗的微信搜索页面测试一下,这样能够让我们的思路更加清晰 在搜索引擎上使用微信公众号英文名进行“搜公众号”操作(因为公众号英文名是公众号唯一的,而中文 ...
- 【Javascript】js图形编辑器库介绍
10个JavaScript库绘制自己的图表 jopen 2015-04-06 18:18:38 • 发布 摘要:10个JavaScript库绘制自己的图表 JointJS JointJS is a J ...
- Android 面试题目汇总
内容源自:2017-2018最新Android面试题 以下是几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组件(生命周期,使用场景,如何启动) java基础 – 数据结构,线程 ...
- IOS 开发学习33 使用sqlite3
sqlite3 命令行简单使用 sqlite3 路径 //打开数据库路径连接 select * from sqlite_master where type="table"; //显 ...
- 在Lucene或Solr中实现高亮的策略
一:功能背景 近期要做个高亮的搜索需求,曾经也搞过.所以没啥难度.仅仅只是原来用的是Lucene,如今要换成Solr而已,在Lucene4.x的时候,散仙在曾经的文章中也分析过怎样在搜索的时候实现高亮 ...
- EditText输入为空button不可点击搜索
一丶任务详情 二丶改动后演示效果 三丶改动过程 分析:非常明显这里是须要监听EditText,推断输入字符串长度是否不为0来改变Button样式 首先的屡清楚代码逻辑在适当的位子加监听推断是最好的处理 ...
- PHP投票实现24小时间隔投票
l 设置cookie,浏览器都有禁用或者清除cookie的功能 l 设置session,关闭浏览器就没了 所以,我们只能尽量防止重复投票现象 session_start(); //获取ip地址 i ...
- HTTP缓存策略 304
1.图解缓存 示例: 200 (from disk cache): 200 (from memory cache) MemoryCache顾名思义,就是将资源缓存到内存中,等待下次访问时不需要重新下载 ...
- margin外边距问题
1 .上下边距会叠加 !DOCTYPE html> <html> <head> <m<etacharset="UTF-8"> < ...