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を解放する責任があります。

適用対象