iOS上的KMM:没有事件循环。使用runBlocking{…}启动一个

我正在尝试coroutinesKotlin Multiplatform项目中使用。我也没有经验。

我正在尝试调用此函数

fun startFlow {
    coroutineScope.launch { 
        withContext(defaultDispatcher) {
           myFlow.collect { next -> onNext(next) }
        } 
    }
}

coroutineScopeiOS是这样的

val defaultScope: CoroutineScope = object : CoroutineScope {
    override val coroutineContext: CoroutineContext
        get() = SupervisorJob() + Dispatchers.Default
}

这不是给我这个问题的唯一调用,实际上所有调用coroutines似乎都因此错误而失败:

kotlin.IllegalStateException: There is no event loop. Use runBlocking { ... } to start one.

这就是我导入库的方式

val commonMain by getting {
        dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3")
        }
    }

我正在使用Kotlin1.4.31。此问题仅存在于 中iOSAndroid可以完美运行。

我不明白我是否遗漏了什么。

回答

对于 iOS,您需要使用后缀为“native-mt”的协程,更多信息请看这里

所以用

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3-native-mt")


以上是iOS上的KMM:没有事件循环。使用runBlocking{…}启动一个的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>