【发布时间】:2016-03-16 04:31:16
【问题描述】:
我在 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 的情况下强制进行前向声明?
【问题讨论】:
-
你用最新的 Xcode 7.2 测试过这个吗?我一直在尝试多种不同的配置来实现这一点,但到目前为止还无法重现。你能在一个小项目中重现吗?
-
我正在下载 xcode 7.2,以便进行测试。
-
即使使用 Xcode 7.2 仍然会出现错误
标签: objective-c swift bridging-header