NSBundle 的理解和 mainBundle 类方法详解,nsbundlemainbundle
2016-01-06 22:12
585 查看
常看到类似的
这样的代码,来产生 file 的完全路径。
那么它是什么东西呢:先看 NSBundle 类,直接继承NSObject类。
这个类的对象,代表了 app 中代码和资源的文件在文件系统里所在的位置,通俗的说,就是定位了程序使用的资源(代码,图形,音乐等数据)在文件系统里的位置,并可以动态的加载、or卸载掉可执行代码。
我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle,在 xcode 里,使用应用程序、框架、or 插件的时候,xcode 会生成对应的资源的目录包。
类方法:
mainBundle 方法详解
返回一个 NSBundle类的对象,这个对象就是一个完全path,这个 path 保存的当前可执行的app路径,或者是 返回nil。app ,Build之后, 资源文件直接就复制到了根目录下,于是读取的方法,应该是这样:
编译之后,mainBundle的资源都是放到RootFolder下,所以,可以直接访问,不要指定内部路径。通常来说,这个 mainbundle 就是 当前的可执行app 的在根目录下的绝对路径,
也就是:
finder根目录开始的路径+app 的name+.app 后缀。而资源就直接访问,都在 app 的包里。比如;
/Users/dashuai/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/tomcat.app/drink.png
NSString *file = [[NSBundle mainBundle] pathForResource:name ofType:nil];
这样的代码,来产生 file 的完全路径。
那么它是什么东西呢:先看 NSBundle 类,直接继承NSObject类。
这个类的对象,代表了 app 中代码和资源的文件在文件系统里所在的位置,通俗的说,就是定位了程序使用的资源(代码,图形,音乐等数据)在文件系统里的位置,并可以动态的加载、or卸载掉可执行代码。
我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle,在 xcode 里,使用应用程序、框架、or 插件的时候,xcode 会生成对应的资源的目录包。
类方法:
mainBundle 方法详解
+ (NSBundle *)mainBundle
返回一个 NSBundle类的对象,这个对象就是一个完全path,这个 path 保存的当前可执行的app路径,或者是 返回nil。app ,Build之后, 资源文件直接就复制到了根目录下,于是读取的方法,应该是这样:
NSString *earth = [[NSBundle mainBundle] pathForResource:@"Brad Cox" ofType:@"png"];
编译之后,mainBundle的资源都是放到RootFolder下,所以,可以直接访问,不要指定内部路径。通常来说,这个 mainbundle 就是 当前的可执行app 的在根目录下的绝对路径,
也就是:
finder根目录开始的路径+app 的name+.app 后缀。而资源就直接访问,都在 app 的包里。比如;
/Users/dashuai/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/tomcat.app/drink.png
相关文章推荐
- 70. Climbing Stairs
- List的contains()方法(转)
- 解决: Fail to create empty document
- LoadRunner运行场景,错误---Error: Failed to send data by channels - post message failed.
- Sicily 1741. Jaunt around the Zhuhai Campus
- 新手安装cocoapods OSX EI captain
- canvas中paint画圆时strokewidth和radius的关系
- sencha touch编译报错:“bfailed to create task or type x-compass-compile Cause: The name is undefined”
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
- 服务器最大连接数“server reached MaxClients setting,consider raising the Max Clients setting”
- std::pair
- _CGImageSourceContainsAnimatedGif、_CGImageSourceCopyProperties、_CADisplayLink、_kUTTypeGIF
- 使用线程 Monitor.Wait() 和 Monitor.Pulse()
- High Availability (HA) 和 Disaster Recovery (DR) 的区别
- baidu招聘
- leetcode第11题——**Container With Most Water
- 【bzoj4320】【ShangHai2006 Homework】【并查集+离线处理】
- 如何辨别磁盘阵列的性能
- extmail
- Failed to read schema document 'http://code.alibabatech.com/schema/dubbo/dubbo.xsd'问题解决方法