HarmonyOS 鸿蒙Next arkTS 类实现 sendable 协议报错
HarmonyOS 鸿蒙Next arkTS 类实现 sendable 协议报错
我准备实现一个实现Sendable协议的自定义类, 形如
const var1 = 100
const var2 = ‘hello world’
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
协议通常用于跨线程或跨进程通信时,确保对象的状态在传输过程中是安全的。
检查以下几点:
- 确保所有成员变量都是
@Sendable
或可安全跨线程/进程访问的类型。 - 检查是否有非
@Sendable
的闭包或函数作为成员或属性。 - 类的定义中是否遗漏了
@Sendable
注解。
如果问题依旧没法解决请加我微信,我的微信是itying888。