gpt4 book ai didi

objective-c - Swift 协议(protocol)可以定义为动态的吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:16:51 25 4
gpt4 key购买 nike

我已经转换了 most of my application to Swift .剩下的是一些 Objective-C 协议(protocol),以及一些应该使用 Swift 习语代替 Objective-C 风格的代码。

我已经使用 Typhoon 组装了我的应用程序.现在,在将其中一个协议(protocol)转换为 Swift 之后,我注意到初始化器不再是动态的(DI 库需要)。所以我尝试将其显式标记为动态,但出现以下错误:

Protocol can't be dynamic

它提示第三个参数(我的 Swift 协议(protocol))永远不能作为 Objective-C 的一部分参与。这似乎是 Swift/ObjC 互操作性的普遍限制。是在 ObjC 中定义协议(protocol)并让 Swift 类实现它的唯一解决方案吗?

以下解决方案无效:

public protocol WeatherReportDao : NSObjectProtocol { //Extend NSObjectProtocol 
}

最佳答案

看来最好的解决方法是将 @objc 指令添加到 Swift 协议(protocol)中。示例:

@objc public protocol CityDao {

//etc. . .

}

. .对我来说,这是过时的,因为我真正想传达的是协议(protocol)需要动态调度——这可以超越 Swift-ObjC 互操作性。

不过,它工作得很好。

关于objective-c - Swift 协议(protocol)可以定义为动态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25880499/

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