如何为可加载包设置Principal Class?

时间:2013-03-04 06:52:57

标签: objective-c macos cocoa nsbundle

好的,我已经研究了一些资源和示例代码(例如this),它应该非常简单,但我仍然无法找到答案。

我设法让整个事情(获取外部包加载和集成)工作,除了一个小细节。

我得到了#34;主要"捆绑中的类,使用:

NSString* bundlePath = [[NSBundle mainBundle] pathForResource:@"MyBundle" 
                                                       ofType:@"plugin"];
NSBundle* myBundle = [NSBundle bundleWithPath:bundlePath];
Class someClass = [myBundle principalClass];

事情是:如何(以及在哪里)我可以设置" principalClass"在捆绑?

1 个答案:

答案 0 :(得分:0)

问题的解决方案相当简单(如果我们排除与Xcode错误相关的问题,而不是实际更新对初始项目所做的更改)。

正如@AnoopVaidya也指出的那样,只需打开info.plist,即使NSPrincipalClass键不存在,也要将其值设置为实际“主要类”的名称。

一旦清理并重新构建,就应该正确识别您的软件包的主要类。

文档:

  

NSBundle以两种方式之一找到主要类。首先,它看起来   对于bundle的信息属性中的NSPrincipalClass键   名单。如果密钥存在,它使用密钥命名的类   value作为bundle的主要类。如果密钥不存在或   key指定一个不存在的类,NSBundle使用第一个   作为主类加载的类。如果捆绑包是用   Xcode,在项目中查看的类的顺序决定了   它们被加载的顺序。

来源:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingCode/Concepts/CocoaBundles.html#//apple_ref/doc/uid/20001269-BAJCIAHA