我做了一个捆绑目标,它的Info.plist
文件指定一个非常具体的类(我们称之为PrincipalClass
)应该是它的主要类。这个类是用 Swift 编写的,具有 @objc
属性。Info.plist
文件已正确复制到捆绑包中,并且我已经多次清理并重建了该项目。
但是,当我从 Swift 框架加载捆绑包时,它的主要类是一个不同的类(我们称之为 NotPrincipalClass
)。它没有被标记为@objc
,事实上,它应该是捆绑包的内部。我在调试器中检查了bundle.bundleURL
,捆绑包中的Info.plist
文件确实说它应该PrincipalClass
;但是当我检查bundle.infoDictionary
时,NSPrincipalClass
属性将NotPrincipalClass
读作字符串!(info 字典还包含 Info.plist
文件未指定的几个键,如 DTCompiler
等。
如果我完全删除NotPrincipalClass
,我会得到另一个内部类,它仍然完全不是我的主要类。
我彻底检查了构建日志,除了编译时,我没有看到提到NotPrincipalClass
。
什么原因可能导致这种情况?我能做些什么来解决它?
不知何故,使用其限定名称("PlugInNamespace.PrincipalClass")解决了这个问题,但这让我非常怀疑,因为我有另一个不需要这个的插件。