1

ホスト アプリケーション (Aperture) 用のプラグインを作成しています。プラグインはバンドルとしてデプロイされ、このバンドル内には、このプラグインに必要なフレームワーク (Sparkle など) があります。

問題は、Aperture 内に別のプラグインが読み込まれる可能性があることです。これには、Sparkle フレームワークも組み込まれています。NSBundleSparkle コードでは、Sparkle のインスタンスを取得するために使用される次のプリプロセッサ ディレクティブが定義されています。

#define SPARKLE_BUNDLE [NSBundle bundleWithIdentifier:@"org.andymatuschak.Sparkle"]

ただし、2 つのプラグインがそれぞれ Sparkle のインスタンスを持っている場合、同じ識別子を持つ 2 つのバンドルが存在し、もちろん私の場合は間違ったものが読み込まれます。とにかくここで偶然に頼りたくない。

私の質問

プラグインに埋め込まれている正しい Sparkle バンドルをロードする方法はありますか?

私はこの代替案について考えました:

#define SPARKLE_BUNDLE [NSBundle bundleForClass:[self class]]

よくわかりませんが、クラスがバンドルの外側にあるファイルによってサブクラス化されている場合、これは壊れると思います(AppKitでも行われているように)。私はここで正しいですか?

4

1 に答える 1