Поделиться через


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>

Указатель на память, помеченную объектом .

Возвращаемое значение

Дескриптор сборки мусора для отслеживания ссылок.

Исключения

API ObjectiveCMarshal не инициализирован.

Комментарии

Метод Initialize() должен быть вызван перед вызовом этой функции.

Объект obj должен иметь тип в иерархии, помеченный .ObjectiveCTrackedTypeAttribute

Обратный вызов Is Referenced, переданный в Initialize(), будет передан taggedMemory из этой функции. Память, на которую он указывает, определяется длиной в Span<T> и будет обнуляться. Он будет доступен до тех пор, пока не obj будет собран сборкой мусора. Память, на которую taggedMemory указывает , может использоваться вызывающей функцией для любых целей и может использоваться во время обратного вызова Is Referenced.

При вызове этой функции несколько раз с одной и той же obj функцией каждый раз возвращается новый дескриптор, но будет возвращена та же память с тегами. Память с тегами гарантированно будет инициализирована нулевым значением только при первом вызове.

Вызывающий объект отвечает за освобождение возвращенного GCHandle.

Применяется к