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

时间:2010-07-30 06:30:53

标签: objective-c cocoa nsbundle

我想问一个关于iPhone应用程序目标C的问题。我在apple开发者网站上阅读了一些示例程序,我发现几乎所有的应用程序都包含一个名为“NSBundle”和“mainBundle”的单词,我真的不明白这个单词的含义。谁能告诉我这件事?非常感谢你。

3 个答案:

答案 0 :(得分:29)

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

捆绑包实现为具有已定义结构的目录树。应用程序,框架和插件每个都有自己的树结构变体。但是,对于Finder,捆绑包看起来像单个文件。

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

答案 1 :(得分:5)

假设我们的代码是:

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

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

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

答案 2 :(得分:1)

关于捆绑包有一个很好的苹果文档。 Bundle Programming Guide