8.7 版本发布—WinterCG 兼容性第一部分
了解更多

NativeScript 提供了 interop 模块,用于处理原生 C 类型、指针、指针运算和内存。

使用 interop

创建指针

Pointer 类型允许你表示 void*。

使用构造函数

要使用给定偏移量创建一个新指针,请使用构造函数

ts
const interop1 = new interop.Pointer(34)

通过从现有指针添加偏移量来创建指针

ts
const interop2 = interop1.add(4)

通过从现有指针移除偏移量来创建指针

ts
const interop3 = interop1.subtract(3)

interop API

Pointer.toNumber()

ts
pointerInstance.toNumber()

Pointer 实例的值转换为数字。


adopt

ts
interop.adopt(ptr: Pointer): AdoptedPointer

使指定的指针被采用。


free

ts
interop.free(ptr: Pointer): void

释放指定未采用指针的内存。


sizeof

ts
interop.sizeof(type: any): number

返回提供的类型的尺寸。type 可以是:类构造函数(Objective-C 接口),实例(Objective-C 接口的包装器),结构体构造函数,结构体实例,引用,协议,函数(对于 C 函数),基本类型


alloc

ts
interop.alloc(size: number): AdoptedPointer

分配 size 字节的内存。


handleof

ts
interop.handleof(instance: any): Pointer

JavaScript 对象可以获取对底层原生对象的引用。该实例可以表示类构造函数(对于 Objective-C 接口),实例(Objective-C 接口的包装器),结构体实例,引用,协议,函数(对于 C 函数)或块。


bufferFromData

ts
interop.bufferFromData(data: NSData): ArrayBuffer

将 NSData 实例包装在 ArrayBuffer 中。


new Reference(value)

在 JavaScript value 周围创建一个新引用。类型的原生表示将在第一次在涉及封送处理的操作中使用该引用时确定。


new Reference(type: Type<T>, data: Pointer)

从具有给定类型的指针创建引用。


new Reference(type: Type<T>, value: any)

在某个 typevalue 周围创建一个新引用。


new FunctionReference(func: T)

创建一个函数引用,该引用可以被封送处理为原生函数指针。只要原生代码需要该函数,JavaScript 引用就必须分配在内存中。

interop 类型

  • "void": Type<void>

  • bool: Type<boolean>

  • int8: Type<number>

  • uint8: Type<number>

  • int16: Type<number>

  • uint16: Type<number>

  • int32: Type<number>

  • uint32: Type<number>

  • int64: Type<number>

  • uint64: Type<number>

  • float: Type<number>

  • double: Type<number>

  • UTF8CString: Type<Reference<number>>

  • unichar: Type<string>

  • id: Type<any>

  • protocol: Type<any>

  • "class": Type<any>

  • selector: Type<string>


new StructType()

创建一个新的结构体实例。


new StructType (obj: T)

创建一个新的结构体实例,并使用提供的对象的字段对其进行初始化。


equals

ts
someStructTypeIntastance.equals(left: T, right: T): boolean

检查两个结构体是否相等。