2

OK、それはかなり自明です。

cocoa アプリケーションがあるとしましょう。独立したロード可能なバンドルとしてパッケージ化された「プラグイン」が既にいくつかあると仮定しましょう。

これは、バンドルが現在どのようにロードされているかです (プラグインの「プリンシパル クラス」が実際には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明らかに、プロパティとして定義されている限り、新しく作成したものとの間で値を設定および取得できます。しかし、これが最も Cocoa に適した方法でしょうか?
4

0 に答える 0