为什么我的 Swift 捆绑包得到了错误的主体 class?

Why does my Swift bundle get the wrong principal class?

我做了一个包目标,它的 Info.plist 文件指定一个非常具体的 class(我们称它为 PrincipalClass)应该是它的主体 class。这个class写在Swift里面,有@objc属性。 Info.plist 文件已正确复制到包中,我已经多次清理并重建项目。

然而,当我从我的 Swift 框架加载包时,它的主体 class 是一个不同的 class(我们称之为 NotPrincipalClass)。它没有被标记为 @objc,事实上,它应该在 bundle 内部。我在调试器中检查了 bundle.bundleURL,捆绑包中的 Info.plist 文件确实说它应该是 PrincipalClass;但是当我检查 bundle.infoDictionary 时,NSPrincipalClass 属性读取 NotPrincipalClass 作为字符串! (信息字典还包含几个未由 Info.plist 文件指定的键,如 DTCompiler 等。)

如果我完全删除 NotPrincipalClass,我会得到另一个内部 class,这仍然完全不是我的主体 class。

我彻底检查了构建日志,没有看到 NotPrincipalClass,除非它被编译了。

这可能是什么原因造成的?我能做些什么来解决它?

不知何故,使用它的限定名称 ("PlugInNamespace.PrincipalClass") 解决了这个问题,但这让我非常怀疑,因为我有另一个不需要这个的插件。