无法将kotlin.UInt强制转换为kotlinx.cinterop.CValuesRef

时间:2019-11-08 08:30:32

标签: ios kotlin kotlin-multiplatform

未捕获的Kotlin异常:kotlin.ClassCastException:kotlin.UInt无法转换为kotlinx.cinterop.CValuesRef

在Kotlin Multiplatform中使用以下代码进行iOS的SSL固定。

SecTrustEvaluate(serverTrust !!,结果为CValuesRef)

1 个答案:

答案 0 :(得分:1)

不能将值转换为指针类型。您必须分配本机内存,将值放入其中,然后将指向该内存的指针传递给函数。最后,它看起来必须像这样:

memScoped{
    val nativeResult = alloc<SecTrustResultTypeVar>()
    nativeResult.value = result
    SecTrustEvaluate(serverTrust!!, nativeResult.ptr)
}

在这里,我在memScoped块中分配了内存,因此该块结束时将自动释放它。请尝试这种方法,并确定是否会出问题,好吗?