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