我正在iOS上尝试使用Kotlin Native,我想尝试的一件事是使用Swot实现Kotlin定义的接口。但是,当我尝试将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)
第三行导致崩溃,并出现以下错误:
*** NSForwarding: warning: object 0x101858d20 of class 'KotlinNativeDemo.SwiftDependency' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[KotlinNativeDemo.SwiftDependency toKotlin:]
Kotlin Native不支持此用例吗?或者可能有一些我配置错误的东西?
目前SwiftDependency
需要继承NSObject
:
class SwiftDependency : NSObject, KotlinCommonDependency {
func foo() {
NSLog("hello")
}
}