D&JのZONE

知之者不如好之者,好之者不如乐之者

Jetpack Compose 中 remember 与 rememberSaveable 的差异:前者只在组合内保持状态,后者可跨进程/Activity 重建恢复。结合 Tab 切换导致 scale 被重置的案例说明原理与选型。

阅读全文 »

一、问题现象

在 Kotlin Multiplatform 项目中实现 iOS 平台的文件存储时,出现如下情况:

  • 现象:导出 .xcappdata 可以确认文件确实在 Documents 目录下,但用 NSData.dataWithContentsOfFile 读取时始终返回空。
  • 报错No such File or Directory(找不到该文件或目录)。

当时使用的读取代码如下(为便于排查,增加了 errorPtr 输出错误信息):

val errorPtr: ObjCObjectVar<NSError?> = alloc()
NSData.dataWithContentsOfFile(fullPath, options = 0, error = errorPtr.ptr)?.let { bytes ->
    val array = ByteArray(bytes.length.toInt())
    bytes.getBytes(array.refTo(0).getPointer(this), bytes.length)
    return@withContext array
}
println(errorPtr.value?.description.orEmpty())
return@withContext null
阅读全文 »
0%