remember VS rememberSaveable
随着Jetpack Compose发布之后,它出现在Android开发者视野中越来越频繁,而作为一个移动端开发者,性能上的考虑一直放在很重要的位置。Jetpack Compose中的组件是通过重组刷新UI的,所以避免没必要的重组是最基本的性能优化方案之一,其中`remember {}`和`rememberSaveable {}`都有让组件跳过重组的作用,但它们又存在着区别。
随着Jetpack Compose发布之后,它出现在Android开发者视野中越来越频繁,而作为一个移动端开发者,性能上的考虑一直放在很重要的位置。Jetpack Compose中的组件是通过重组刷新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
以查看具体错误信息