HarmonyOS 鸿蒙Next 好像遇到了一个奇怪的赋值bug
HarmonyOS 鸿蒙Next 好像遇到了一个奇怪的赋值bug 最近在尝试写1024的代码,
代码逻辑是用一个数字型数组来储存16个数字,横向排列,展开成4*4格式。
向某一方向滑动操作以后,让同一列的数字两两比较,如果数字相同将其中一个翻倍,另一个归0。
没想到运行时反复异常。排查后发现问题处在对最后一位数字赋值的时候。
把最后一位数字赋值为0就会出现预览器卡死,实机测试的时候直接程序闪退的问题。但是同样的代码,把赋值为0改成赋值为别的数字就不会出现这个问题。
怀疑是不是遇到了bug
直接上代码:
@Entry
@Componentstruct my1024{
@State tt:Array<number> =[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
build(){
Column(){
Column(){
Grid(){
ForEach(this.tt,
(CC) => {
GridItem(){
Text($r(CC).id.toString())
}.height('100px')
.width('100px')
.backgroundColor(Color.Orange)
},
item=>item)
}.columnsTemplate('1fr 1fr 1fr 1fr')
.rowsTemplate('1fr 1fr 1fr 1fr')
.backgroundColor(Color.Blue)
.height('600px')
.width('600px')
.gesture(
GestureGroup(GestureMode.Parallel,
PanGesture({direction:PanDirection.Up})
.onActionEnd((event:GestureEvent)=>{
for (var index = 0; index <this.tt.length; index++) {
this.tt[index]-=1
}
}),
PanGesture({direction:PanDirection.Down})
.onActionEnd((event:GestureEvent)=>{
for (var index = 0; index <this.tt.length; index++) {
this.tt[index]+=1
}
}),
)
)
}.width('90%')
}.height('100%')
.width('100%')
.backgroundColor(Color.Gray)
}
}
最近在尝试写1024的代码,
代码逻辑是用一个数字型数组来储存16个数字,横向排列,展开成4*4格式。
向某一方向滑动操作以后,让同一列的数字两两比较,如果数字相同将其中一个翻倍,另一个归0。
没想到运行时反复异常。排查后发现问题处在对最后一位数字赋值的时候。
把最后一位数字赋值为0就会出现预览器卡死,实机测试的时候直接程序闪退的问题。但是同样的代码,把赋值为0改成赋值为别的数字就不会出现这个问题。
怀疑是不是遇到了bug
直接上代码:
@Entry
@Componentstruct my1024{
@State tt:Array<number> =[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
build(){
Column(){
Column(){
Grid(){
ForEach(this.tt,
(CC) => {
GridItem(){
Text($r(CC).id.toString())
}.height('100px')
.width('100px')
.backgroundColor(Color.Orange)
},
item=>item)
}.columnsTemplate('1fr 1fr 1fr 1fr')
.rowsTemplate('1fr 1fr 1fr 1fr')
.backgroundColor(Color.Blue)
.height('600px')
.width('600px')
.gesture(
GestureGroup(GestureMode.Parallel,
PanGesture({direction:PanDirection.Up})
.onActionEnd((event:GestureEvent)=>{
for (var index = 0; index <this.tt.length; index++) {
this.tt[index]-=1
}
}),
PanGesture({direction:PanDirection.Down})
.onActionEnd((event:GestureEvent)=>{
for (var index = 0; index <this.tt.length; index++) {
this.tt[index]+=1
}
}),
)
)
}.width('90%')
}.height('100%')
.width('100%')
.backgroundColor(Color.Gray)
}
}
更多关于HarmonyOS 鸿蒙Next 好像遇到了一个奇怪的赋值bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你用的sdk什么版本的呀,我用OpenHarmony API9测试预览没有卡死呀
更多关于HarmonyOS 鸿蒙Next 好像遇到了一个奇怪的赋值bug的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我用的也是API9,今天又试了还是一赋值就奔溃。同样的代码在笔记本和台式机上测试都这样,不知道哪里有问题。
期待HarmonyOS能继续优化多屏协同功能,让跨设备体验更加完美。
学习
针对您提到的“HarmonyOS 鸿蒙Next 好像遇到了一个奇怪的赋值bug”这一问题,以下是一些可能的解释和排查方向:
在HarmonyOS鸿蒙系统中,如果遇到赋值相关的bug,首先需要确认以下几点:
-
变量类型与赋值类型是否匹配:确保您赋值的变量类型与赋值的值类型完全一致。例如,整型变量不能赋值为浮点型值,除非进行了显式类型转换。
-
赋值语句的上下文:检查赋值语句是否在正确的上下文环境中执行。例如,在某些多线程环境中,可能存在竞态条件导致赋值操作未正确完成。
-
内存管理:鸿蒙系统采用类似Android的内存管理机制,如果赋值操作涉及指针或内存地址,需要确保相关内存已被正确分配且未被释放。
-
编译器或IDE问题:有时,编译器或集成开发环境(IDE)的bug也可能导致赋值问题。尝试更新编译器或IDE到最新版本,看是否问题依旧。
-
系统或框架问题:如果上述排查均无果,可能是鸿蒙系统或相关框架本身的bug。此时,建议查看鸿蒙系统的官方文档或社区,看是否有其他开发者遇到并解决了类似问题。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,