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

7 回复

你用的sdk什么版本的呀,我用OpenHarmony API9测试预览没有卡死呀

cke_144.png

更多关于HarmonyOS 鸿蒙Next 好像遇到了一个奇怪的赋值bug的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我用的也是API9,今天又试了还是一赋值就奔溃。同样的代码在笔记本和台式机上测试都这样,不知道哪里有问题。

能麻烦你给我远程看一下吗,

基本信息

  • 项目名称: 深色代码主题

  • 项目状态: 进行中

  • 负责人: 张三

  • 开始时间: 2023-01-01

  • 预计完成时间: 2023-12-31

  • 查看详细信息

我又测试了一下,是HarmonyOS 的API9会报这个错误,OpenHarmony 的API9可以正常运行。

期待HarmonyOS能继续优化多屏协同功能,让跨设备体验更加完美。

针对您提到的“HarmonyOS 鸿蒙Next 好像遇到了一个奇怪的赋值bug”这一问题,以下是一些可能的解释和排查方向:

在HarmonyOS鸿蒙系统中,如果遇到赋值相关的bug,首先需要确认以下几点:

  1. 变量类型与赋值类型是否匹配:确保您赋值的变量类型与赋值的值类型完全一致。例如,整型变量不能赋值为浮点型值,除非进行了显式类型转换。

  2. 赋值语句的上下文:检查赋值语句是否在正确的上下文环境中执行。例如,在某些多线程环境中,可能存在竞态条件导致赋值操作未正确完成。

  3. 内存管理:鸿蒙系统采用类似Android的内存管理机制,如果赋值操作涉及指针或内存地址,需要确保相关内存已被正确分配且未被释放。

  4. 编译器或IDE问题:有时,编译器或集成开发环境(IDE)的bug也可能导致赋值问题。尝试更新编译器或IDE到最新版本,看是否问题依旧。

  5. 系统或框架问题:如果上述排查均无果,可能是鸿蒙系统或相关框架本身的bug。此时,建议查看鸿蒙系统的官方文档或社区,看是否有其他开发者遇到并解决了类似问题。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部