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

Que*_*ons 27 cocoa objective-c nsbundle

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

Jer*_*myP 29

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

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

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


小智 5

假设我们的代码是:

NSString *myFile=[[NSBundle mainBundle]pathForResource:@"subjects" ofType:@"plist"];
Run Code Online (Sandbox Code Playgroud)

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

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