Jas*_*ues 3 objective-c typhoon swift
我已将我的大部分应用程序转换为Swift.剩下的是一些Objective-C协议,以及一些应该使用Swift习语代替Objective-C风格的代码.
我已经使用Typhoon组装了我的应用程序.现在将其中一个协议转换为Swift之后,我注意到初始化器不再是动态的(DI库需要).所以我尝试将其标记为动态,但出现以下错误:

它抱怨第三个参数(我的Swift协议)永远不能作为Objective-C的一部分参与.这似乎是Swift/ObjC互操作性的普遍限制.是唯一的解决方案来定义ObjC中的协议并让Swift类实现它吗?
以下解决方案不起作用:
public protocol WeatherReportDao : NSObjectProtocol { //Extend NSObjectProtocol
}
Run Code Online (Sandbox Code Playgroud)
似乎最好的解决方法是将@objc指令添加到Swift协议中.例:
@objc public protocol CityDao {
//etc. . .
}
Run Code Online (Sandbox Code Playgroud)
..对我来说,这是陈旧的,因为我真正想要传达的是协议需要动态调度 - 这可以超越Swift-ObjC的互操作性.
不过,它运作得很好.
| 归档时间: |
|
| 查看次数: |
604 次 |
| 最近记录: |