我一直试图在iOS项目的后台线程上运行库中的任务,但遇到了一些问题:
我尝试使用Kotlin-Coroutines和GCD的平台库,并且只能在iOS的主线程中运行任务。每当我尝试异步发送一些东西到后台线程时,iOS应用程序就会崩溃,导致以下错误:
“com.hp.jarvis.kmm.LogFile.$saveLog$lambda-0$FUNCTION_REFERENCE$9@155a948 :从其他线程访问非共享kotlin.native.IncorrectDereferenceException的非法尝试”
发布于 2021-05-06 16:59:39
IncorrectDereferenceException基本上是一个信号,表明您试图从后台线程访问全局状态。
你可以玩:
@ThreadLocal ->为特定object@SharedImmutable ->的每个线程创建一个副本,将冻结对象并使其对所有线程可用,请注意,如果您试图更改冻结对象的值,您将得到InvalidMutabilityException为了理解当前的内存模型:https://touchlab.co/kotlin-native-concurrency/,我肯定会阅读这个博客
https://stackoverflow.com/questions/67422231
复制相似问题