我正在为主机应用程序(Aperture)编写插件。该插件被部署为一个包,在这个包内有这个插件需要的框架,例如 Sparkle。
问题是现在可以在 Aperture 中加载另一个插件,该插件也嵌入了 Sparkle 框架。在 Sparkle 代码中,定义了以下预处理器指令,用于检索 Sparkle 的NSBundle
实例:
#define SPARKLE_BUNDLE [NSBundle bundleWithIdentifier:@"org.andymatuschak.Sparkle"]
但是,如果两个插件都有自己的 Sparkle 实例,则存在两个具有相同标识符的包,当然在我的情况下加载了错误的包。无论如何,我不想在这里依靠机会。
我的问题
有没有办法加载正确的 Sparkle 包,嵌入在我的插件中?
我想到了这个替代方案:
#define SPARKLE_BUNDLE [NSBundle bundleForClass:[self class]]
我不确定,但我认为如果该类被位于捆绑包外部的文件子类化(就像在 AppKit 中所做的那样),这会中断。我在这里正确吗?