为什么我的Swift包会得到错误的主类?

时间:2015-01-30 02:30:21

标签: swift nsbundle

我创建了一个bundle目标,它的Info.plist文件指定一个非常特定的类(让它称之为PrincipalClass)应该是它的主要类。这个类是用Swift编写的,具有@objc属性。 Info.plist文件已正确复制到包中,我已多次清理并重建项目。

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

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

我彻底检查了构建日志,除了编译时,我没有看到NotPrincipalClass

是什么导致这个?我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:7)

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