我在 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 的情况下强制进行前向声明?