InvalidMutabilityException:冻结 kotlin.native.internal 异常的突变尝试
InvalidMutabilityException: mutation attempt of frozen kotlin.native.internal Exception
我是 Kotlin Multiplatform 和 Swift 语言的新手,我对 KMM 只有 iOS 部分有问题,我在 [=27] 上成功 运行 =] 但由于并发问题,它在 IOS 上失败。
Kotlin 代码片段:
@Throws(Exception::class)
suspend fun getResponse(data: String): String {
var response: String
client.responsePipeline.intercept(HttpResponsePipeline.Transform) { (_, body) ->
when (context.response.status) {
HttpStatusCode.OK -> response = body as String
}
}
response = client.post(BASE_URL) {
contentType(ContentType.Application.Json)
body = data
}
return response
}
iOS 代码片段:
@State var response: String = ""
Button("Click") {
Repository().getResponse(data: "hello world") { data, error in
if data != nil {
response.self = "\(data)"
}
}
}
我从我想要的 Api 得到了 HttpClient: {"output":"...","statusCode":200 } 但它还是失败了。
我尝试用 CoroutineScope(Dispatchers.Main) 包装 post 请求{
withContext(Dispatchers.Default){}}
但是没有运气,知道为什么吗?
假设您使用的是最新的 Kotlin 和库版本,您应该启用新的内存模型。把这个放在 gradle.properties
kotlin.native.binary.memoryModel=experimental
有关示例,请参阅 KaMP Kit。
迁移到 Ktor 2.0.0
为我解决了很多问题。
我是 Kotlin Multiplatform 和 Swift 语言的新手,我对 KMM 只有 iOS 部分有问题,我在 [=27] 上成功 运行 =] 但由于并发问题,它在 IOS 上失败。
Kotlin 代码片段:
@Throws(Exception::class)
suspend fun getResponse(data: String): String {
var response: String
client.responsePipeline.intercept(HttpResponsePipeline.Transform) { (_, body) ->
when (context.response.status) {
HttpStatusCode.OK -> response = body as String
}
}
response = client.post(BASE_URL) {
contentType(ContentType.Application.Json)
body = data
}
return response
}
iOS 代码片段:
@State var response: String = ""
Button("Click") {
Repository().getResponse(data: "hello world") { data, error in
if data != nil {
response.self = "\(data)"
}
}
}
我从我想要的 Api 得到了 HttpClient: {"output":"...","statusCode":200 } 但它还是失败了。
我尝试用 CoroutineScope(Dispatchers.Main) 包装 post 请求{ withContext(Dispatchers.Default){}}
但是没有运气,知道为什么吗?
假设您使用的是最新的 Kotlin 和库版本,您应该启用新的内存模型。把这个放在 gradle.properties
kotlin.native.binary.memoryModel=experimental
有关示例,请参阅 KaMP Kit。
迁移到 Ktor 2.0.0
为我解决了很多问题。