在Kotlin Multiplatform中使用协程的具有可变变量的IOS上的InvalidMutabilityException

科贝拉

我简化了错误,只有这个类:

class TestClass{
    private var string = "Hello"

    fun testError() {
        string= "It Works"
        GlobalScope.launch(Dispatchers.Default) {
            string = "Doesn't work"
        }
    }
}

如果我在主线程上(在IOS上)启动TestClass()。testError(),它将引发InvalidMutabilityException(在行->字符串=“不起作用”)。因此,我认为在创建该变量的线程以外的线程上更改该变量可能不是一个好主意。所以我改为:

class TestClass{
    private var string = "Hello"

    fun testError() {
        string= "It Works"
        GlobalScope.launch(Dispatchers.Default) {
            withContext(Dispatchers.Main) { string = "Doesn't work" }
        }
    }
}

但它仍然引发错误:

kotlin.native.concurrent.InvalidMutabilityException:冻结的com.example.project.TestClass@fe10a8的突变尝试

顺便说说。上面的两个代码都可以在Android端使用

凯文·加利根(Kevin Galligan)

Kotlin / Native具有与JVM不同的线程模型。TestClass在lambda中捕获数据时冻结。string分配默默地捕捉父TestClass并冻结它。

请参阅以下内容:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有Kotlin协程的FusedLocationProviderClient

来自分类Dev

暂停Kotlin协程,直到流具有特定值

来自分类Dev

在Kotlin中使用线程或协程更好吗?

来自分类Dev

通过在Kotlin中使用扩展功能来组织协程

来自分类Dev

如何在集合中使用 Kotlin 的协程

来自分类Dev

NetworkBoundResource与Kotlin协程

来自分类Dev

Kotlin协程壁垒:等待所有协程完成

来自分类Dev

Kotlin协程的正确使用方法

来自分类Dev

使用协程的Kotlin / Native多线程

来自分类Dev

如何正确地将可变变量传递给带有伴随对象的 kotlin 类?

来自分类Dev

在Kotlin中测试协程

来自分类Dev

Kotlin 协程范围定义

来自分类Dev

Kotlin 协程,持续更新

来自分类Dev

在Android中使用Kotlin协程保存文件显示了不适当的阻止方法调用

来自分类Dev

如何在kotlin中使用协程每秒调用一个函数

来自分类Dev

在Kotlin中使用协程时,如何保证获取最新数据?

来自分类Dev

是否可以在春季靴中使用@Transactional和kotlin协程?

来自分类Dev

取消 ViewModel 的 onCleared() 上的所有 Kotlin 协程待处理作业

来自分类Dev

Kotlin协程验证在同一Dispatcher上运行

来自分类常见问题

Kotlin协程:与工作计划有关。(invokeOnCompletion)

来自分类Dev

使用Dispatchers.IO进行Kotlin协程测试

来自分类Dev

如何使用Kotlin协程调用阻塞函数?

来自分类Dev

如何使用Kotlin协程实现计时器

来自分类Dev

Android Kotlin协程:使用Global范围是否是反模式?

来自分类Dev

Android:使用 kotlin 协程的 ViewModel 测试不起作用

来自分类Dev

Kotlin协程:使用NonCancellable和独立的新Job之间有什么区别

来自分类Dev

询问在Kotlin中使用变量

来自分类常见问题

Kotlin协程如何比RxKotlin更好?

来自分类Dev

Kotlin协程列表返回空值

Related 相关文章

  1. 1

    具有Kotlin协程的FusedLocationProviderClient

  2. 2

    暂停Kotlin协程,直到流具有特定值

  3. 3

    在Kotlin中使用线程或协程更好吗?

  4. 4

    通过在Kotlin中使用扩展功能来组织协程

  5. 5

    如何在集合中使用 Kotlin 的协程

  6. 6

    NetworkBoundResource与Kotlin协程

  7. 7

    Kotlin协程壁垒:等待所有协程完成

  8. 8

    Kotlin协程的正确使用方法

  9. 9

    使用协程的Kotlin / Native多线程

  10. 10

    如何正确地将可变变量传递给带有伴随对象的 kotlin 类?

  11. 11

    在Kotlin中测试协程

  12. 12

    Kotlin 协程范围定义

  13. 13

    Kotlin 协程,持续更新

  14. 14

    在Android中使用Kotlin协程保存文件显示了不适当的阻止方法调用

  15. 15

    如何在kotlin中使用协程每秒调用一个函数

  16. 16

    在Kotlin中使用协程时,如何保证获取最新数据?

  17. 17

    是否可以在春季靴中使用@Transactional和kotlin协程?

  18. 18

    取消 ViewModel 的 onCleared() 上的所有 Kotlin 协程待处理作业

  19. 19

    Kotlin协程验证在同一Dispatcher上运行

  20. 20

    Kotlin协程:与工作计划有关。(invokeOnCompletion)

  21. 21

    使用Dispatchers.IO进行Kotlin协程测试

  22. 22

    如何使用Kotlin协程调用阻塞函数?

  23. 23

    如何使用Kotlin协程实现计时器

  24. 24

    Android Kotlin协程:使用Global范围是否是反模式?

  25. 25

    Android:使用 kotlin 协程的 ViewModel 测试不起作用

  26. 26

    Kotlin协程:使用NonCancellable和独立的新Job之间有什么区别

  27. 27

    询问在Kotlin中使用变量

  28. 28

    Kotlin协程如何比RxKotlin更好?

  29. 29

    Kotlin协程列表返回空值

热门标签

归档