Swift 不生成协议的前向声明
Swift does not generates forward declaration for protocol
我在框架中定义了一个 swift class,该框架正在从 obj-c 应用程序中使用。
生成的 -Swift.h header 包含标有@objc 的 swift class,但有一个 属性 导致编译失败。
这个 属性 在 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
在定义这些属性的 class 之上添加前向声明,-Swift.h 编译成功。
所以它看起来像是 -Swift.h 代中的错误,但是是否有另一种方法可以在不使用虚拟变量的情况下强制进行前向声明?
除了使用虚拟变量,我没有找到任何其他方法...
我在框架中定义了一个 swift class,该框架正在从 obj-c 应用程序中使用。
生成的 -Swift.h header 包含标有@objc 的 swift class,但有一个 属性 导致编译失败。
这个 属性 在 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
在定义这些属性的 class 之上添加前向声明,-Swift.h 编译成功。
所以它看起来像是 -Swift.h 代中的错误,但是是否有另一种方法可以在不使用虚拟变量的情况下强制进行前向声明?
除了使用虚拟变量,我没有找到任何其他方法...