remember VS rememberSaveable
随着 Jetpack Compose 的普及,它在 Android 开发中的应用越来越广泛。对于移动端开发者来说,性能优化始终是关键问题。Jetpack Compose 通过重组(Recomposition)更新 UI,因此避免不必要的重组是基本的优化手段之一。remember {} 和 rememberSaveable {} 都能帮助组件跳过重组,但它们的作用机制有所不同。
随着 Jetpack Compose 的普及,它在 Android 开发中的应用越来越广泛。对于移动端开发者来说,性能优化始终是关键问题。Jetpack Compose 通过重组(Recomposition)更新 UI,因此避免不必要的重组是基本的优化手段之一。remember {} 和 rememberSaveable {} 都能帮助组件跳过重组,但它们的作用机制有所不同。
在Kotlin Multiplatform项目中,实现iOS平台的文件存储时,虽然可以通过导出.xcappdata
文件确认文件确实存在于目录下,但在调用NSData.dataWithContentsOfFile
读取时却始终返回空。错误信息显示找不到该文件或目录 (No such File or Directory
)。
示例代码如下:
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
Note: 为了更好地定位问题,添加了errorPtr
以查看具体错误信息