目标C中的NSBundle和mainBundle是什么?

问题描述 投票:28回答:3

我想问一个关于iPhone应用程序上的目标C的问题。我在苹果开发者网站上阅读了一些示例程序,发现几乎所有的应用程序都包含一个名为“ NSBundle”和“ mainBundle”的单词,我真的不理解这个单词的含义。有人可以告诉我吗?非常感谢。

objective-c cocoa nsbundle
3个回答
30
投票

捆绑软件是用于在Mac OS X上打包软件的结构。应用程序,框架和插件都是不同种类的捆绑软件。如果您愿意,捆绑软件可能包含可执行代码,资源,头文件和其他内容(包括其他捆绑软件)。

捆绑包被实现为具有定义结构的目录树。应用程序,框架和插件在树的结构上各有不同。但是,对于Finder,捆绑包看起来像单个文件。

主捆绑包只是正在运行的应用程序的捆绑包。因此,例如,Apple邮件程序的主捆绑包是/Applications/Mail.app。


5
投票

假设我们的代码是:

NSString *myFile=[[NSBundle mainBundle]pathForResource:@"subjects" ofType:@"plist"];

我们在Xcode中创建subject.plist(文件>新建>新文件> iOS>资源>属性列表),并将其复制到我们的支持文件夹中。

这实际上是一种当我们不知道它们在哪里时,获取安装在iOS设备上的文件的方法。这是获取subject.plist文件的一种方法,该文件是我们应用程序内部捆绑或内部包的一部分。我们无法直接访问iOS设备上的文件系统,因此这是我们拥有自己资产的方式。


1
投票

关于捆绑软件,有很好的苹果文档。 Bundle Programming Guide

© www.soinside.com 2019 - 2024. All rights reserved.