gpt4 book ai didi

objective-c - Swift 不会为协议(protocol)生成前向声明

转载 作者:搜寻专家 更新时间:2023-11-01 05:38:18 25 4
gpt4 key购买 nike

我在框架中定义了一个 swift 类,该类正在从 obj-c 应用程序中使用。

生成的 -Swift.h header 包含标有 @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 的情况下强制进行前向声明?

最佳答案

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

关于objective-c - Swift 不会为协议(protocol)生成前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34203582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com