首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用在iOS应用程序上运行后台线程中的任务?

如何使用在iOS应用程序上运行后台线程中的任务?
EN

Stack Overflow用户
提问于 2021-05-06 16:23:56
回答 1查看 858关注 0票数 3

我一直试图在iOS项目的后台线程上运行库中的任务,但遇到了一些问题:

我尝试使用Kotlin-Coroutines和GCD的平台库,并且只能在iOS的主线程中运行任务。每当我尝试异步发送一些东西到后台线程时,iOS应用程序就会崩溃,导致以下错误:

“com.hp.jarvis.kmm.LogFile.$saveLog$lambda-0$FUNCTION_REFERENCE$9@155a948 :从其他线程访问非共享kotlin.native.IncorrectDereferenceException的非法尝试”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-06 16:59:39

IncorrectDereferenceException基本上是一个信号,表明您试图从后台线程访问全局状态。

你可以玩:

  • @ThreadLocal ->为特定object
  • @SharedImmutable ->的每个线程创建一个副本,将冻结对象并使其对所有线程可用,请注意,如果您试图更改冻结对象的值,您将得到InvalidMutabilityException

为了理解当前的内存模型:https://touchlab.co/kotlin-native-concurrency/,我肯定会阅读这个博客

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67422231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档