0

我尝试在 Kotlin Multiplatform XCFramework 中使用 Swift 代码。

我有一个带有扩展的协议,用于该协议的默认实现

@objc protocol Greeting {
    var something: String { get }
}

extension Greeting {
    var something: String {
        return "Hello from Swift"
    }
}

在 Platform.kt 我正在写

class GreetingImpl: NSObject(), GreetingProtocol {

    override fun something(): String {
        return (this as GreetingProtocol).something() 
    }
}

actual class Platform actual constructor() {
    val object = GreetingImpl()
    val value = object.something() //Application builds but falls here
}

如何在 Kotlin Multiplatform 中使用 Swift 协议默认实现?

4

1 回答 1

1

据我所知,主要有两个问题:

  1. 扩展缺少@objc注释。虽然这是 Swift 方面的限制,但这会阻止 Kotlin 提供完整的互操作性(Kotlin/Native 不支持与 Swift 的直接互操作性,仅通过 Objective-C [docs])。
  2. Objective-C 不支持协议默认实现(参见这个相关的 StackOverflow 问题)。

所以,我想说在 Kotlin Multiplatform 中没有使用 Swift 协议默认实现的选项。

于 2021-02-03T14:48:23.337 回答