iOS で Kotlin Native の実験を行っていますが、試したかったことの 1 つは、Kotlin で定義されたインターフェイスを Swift で実装することでした。ただし、その Swift オブジェクトを Kotlin コードに戻そうとすると、クラッシュしてしまいます。
kotlin gradle プラグイン バージョン 1.2.30 と kotlin ネイティブ バージョン 0.6.1 を使用しています
最小限の例を次に示します。Kotlin コードは KotlinCommon という名前のフレームワークにコンパイルされ、xcode プロジェクトに含まれます。
DemoClass.kt
class DemoClass {
fun process(dependency: Dependency) {
dependency.foo()
}
}
interface Dependency {
fun foo()
}
SwiftDependency.swift
import KotlinCommon
class SwiftDependency : KotlinCommonDependency {
func foo() {
NSLog("hello")
}
}
次に、iOS UIから実行しようとします
let module = KotlinCommonDemoClass()
let dependency = SwiftDependency()
module.process(dependency: dependency)
3 行目により、次のエラーでクラッシュが発生します。
*** NSForwarding: warning: object 0x101858d20 of class 'KotlinNativeDemo.SwiftDependency' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[KotlinNativeDemo.SwiftDependency toKotlin:]
このユースケースは Kotlin Native でサポートされていませんか? または、設定が間違っている可能性がありますか?