将Kotlin接口的Swift实现传递给Kotlin方法时出错

问题描述 投票:2回答:1

我正在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不支持此用例吗?或者可能有一些我配置错误的东西?

ios swift kotlin kotlin-native
1个回答
8
投票

目前SwiftDependency需要继承NSObject

class SwiftDependency : NSObject, KotlinCommonDependency {
    func foo() {
        NSLog("hello")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.