address 属性
底层数据的内存地址。
形式为 expression.address
的表达式表示此 address
,只能作为整个参数表达式出现在调用叶 Native 外部函数时。
示例
@Native<Void Function(Pointer<MyUnion>)>(isLeaf: true)
external void myFunction(Pointer<MyUnion> pointer);
final class MyUnion extends Union {
@Int8()
external int x;
}
void main() {
final myUnion = Union.create<MyUnion>();
myFunction(myUnion.address);
}
在 .address
之前的表达式将被像赋值的左侧那样评估,得到可以访问表达式后存储的东西,既可以用于读取也可以用于写入。然后 .address
提供了指向该存储的本地指针。
在调用叶 Native 外部函数时,将在调用本地代码之前评估 .address
。这确保 Dart 垃圾回收器不会移动地址指向的对象。
实现
external Pointer<T> get address;