HarmonyOS 鸿蒙Next arkTS 类实现 sendable 协议报错

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next arkTS 类实现 sendable 协议报错

我准备实现一个实现Sendable协议的自定义类, 形如

//Person.ets

const var1 = 100

const var2 = ‘hello world’ 

@Sendable

class Person {

_name :string = ‘’

constructor() {}

work() {

console.log(‘var1’, var1 )

}

}

在work方法访问var1变量的时候 就报Only imported variables can be captured by “Sendable” class (arkts-sendable-imported-variables) <ArkTSCheck>

我很奇怪,这个变量就是个同一ets里面的常量,为啥还不能访问呢?

2 回复

变量只能是直接导入的或者在Sendable装饰的类内部的,包括@Concurrent装饰器也是如此,不可以使用这二者以外的变量,包括当前文件全局声明的变量

在HarmonyOS ArkTS中,若类实现sendable协议时遇到报错,通常是因为该类或其成员不满足sendable协议的约束条件。sendable协议通常用于跨线程或跨进程通信时,确保对象的状态在传输过程中是安全的。

检查以下几点:

  1. 确保所有成员变量都是@Sendable或可安全跨线程/进程访问的类型。
  2. 检查是否有非@Sendable的闭包或函数作为成员或属性。
  3. 类的定义中是否遗漏了@Sendable注解。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部