2

好的,这是不言自明的。

假设我们有我们的可可应用程序。让我们都假设您已经有了一些“插件”,它们被打包为独立的可加载包。

这是当前加载包的方式(假设插件的“主类”实际上是一个NSWindowController子类:

// Load the bundle
NSString* bundlePath = [[NSBundle mainBundle] pathForResource:@"BundlePlugin" 
                                                       ofType:@"bundle"]
NSBundle* b = [NSBundle bundleWithPath:bundlePath];
NSError* err = nil;
[b loadAndReturnError:&err];
if (!err)
{
     // if everything goes fine, initialise the main controller
     Class mainWindowControllerClass = [b principalClass];
     id mainWindowController = [[mainWindowControllerClass alloc] initWithWindowNibName:@"PluginWindow"];
}

现在,这是问题所在:

  • 如何将我的一些主要应用程序的对象“发布”到插件?
  • 如何让我的插件“了解”我的主应用程序的类?
  • 是否有可能在它们之间实际建立某种通信,以便插件可以与我的主应用程序交互?如果是这样,怎么办?

旁注:

  • 使用协议能否消除“未知选择器”错误和大量使用performSelector:withObject:?
  • mainWindowController显然,只要将它们定义为属性,我就可以设置和获取新创建的值。但这是对可可最友好的方式吗?
4

0 回答 0