【问题标题】:Swift does not generates forward declaration for protocolSwift 不会为协议生成前向声明
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-18
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多