Swift不会为协议生成前向声明

时间:2015-12-10 13:50:07

标签: objective-c swift bridging-header

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

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

此属性在swift代码中定义如下:

public var storageClass : StorageProtocol.Type = UserDefaultStorage.self

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

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

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

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

public var storage : StorageProtocol? = nil

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

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

1 个答案:

答案 0 :(得分:0)

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