次の方法で共有


ObjectiveCMarshal.CreateReferenceTrackingHandle メソッド

定義

指定されたオブジェクトのネイティブ参照追跡を要求します。

public:
 static System::Runtime::InteropServices::GCHandle CreateReferenceTrackingHandle(System::Object ^ obj, [Runtime::InteropServices::Out] Span<IntPtr> % taggedMemory);
public static System.Runtime.InteropServices.GCHandle CreateReferenceTrackingHandle (object obj, out Span<IntPtr> taggedMemory);
static member CreateReferenceTrackingHandle : obj * Span -> System.Runtime.InteropServices.GCHandle
Public Shared Function CreateReferenceTrackingHandle (obj As Object, ByRef taggedMemory As Span(Of IntPtr)) As GCHandle

パラメーター

obj
Object

追跡するオブジェクト。

taggedMemory

Span<IntPtr>

Span<nativeint>

オブジェクトにタグ付けされたメモリへのポインター。

戻り値

参照追跡 GC ハンドル。

例外

ObjectiveCMarshal API が初期化されていません。

注釈

Initialize() は、この関数を呼び出す前に呼び出す必要があります。

obj 、階層内で でマークされた型を ObjectiveCTrackedTypeAttribute持っている必要があります。

Initialize() に渡される "Is Referenced" コールバックは、この関数から返された を taggedMemory 渡されます。 指すメモリは 内 Span<T> の長さによって定義され、ゼロになります。これは、GC によって収集されるまで obj 使用できます。 によって taggedMemory 指されるメモリは、この関数の呼び出し元が任意の目的で使用でき、"Is Referenced" コールバック中に使用できます。

この関数を同じ obj で複数回呼び出すと、毎回新しいハンドルが返されますが、同じタグ付きメモリが返されます。 タグ付けされたメモリは、最初の呼び出しでゼロが初期化されることのみが保証されます。

呼び出し元は、返された GCHandleを解放する役割を担います。

適用対象