2

我在 obj-c 应用程序使用的框架中定义了一个 swift 类。

生成的 -Swift.h 标头包含用 @objc 标记的 swift 类,但有一个属性会导致编译失败。

这个属性在 swift 代码中是这样定义的:

public var storageClass : StorageProtocol.Type = UserDefaultStorage.self

所以生成的 obj-c 属性看起来像这样

@property (nonatomic) Class <StorageProtocol> __nonnull storageClass;

但是 Xcode 在这里不接受“StorageProtocol”符号,因为前向声明“@protocol StorageProtocol;” 不见了。

如果我添加一个像这样定义的新变量:

public var storage : StorageProtocol? = nil

前向声明添加在定义这些属性的类之上,并且 -Swift.h 编译成功。

所以它看起来像 -Swift.h 一代中的一个错误,但是有没有另一种方法可以在不使用虚拟 var 的情况下强制进行前向声明?

4

1 回答 1

0

除了使用虚拟变量之外,我没有找到任何其他方法......

于 2016-11-25T09:45:37.143 回答