다음을 통해 공유


HKObject 생성자

정의

오버로드

HKObject(NSCoder)

unarchiver 개체에 저장된 데이터에서 개체를 초기화하는 생성자입니다.

HKObject(NSObjectFlag)

초기화를 건너뛰고 개체만 할당하기 위해 파생 클래스에서 를 호출하는 생성자입니다.

HKObject(IntPtr)

관리되지 않는 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

HKObject(NSCoder)

unarchiver 개체에 저장된 데이터에서 개체를 초기화하는 생성자입니다.

[Foundation.Export("initWithCoder:")]
[ObjCRuntime.DesignatedInitializer]
public HKObject (Foundation.NSCoder coder);
new HealthKit.HKObject : Foundation.NSCoder -> HealthKit.HKObject

매개 변수

coder
NSCoder

unarchiver 개체입니다.

특성

설명

이 생성자는 클래스를 unarchiver에서 초기화할 수 있도록 제공됩니다(예: NIB 역직렬화 중). 프로토콜의 NSCoding 일부입니다.

개발자가 이 개체의 하위 클래스를 만들고 보관 파일에서 역직렬화를 계속 지원하려는 경우 형식의 NSCoder 단일 매개 변수를 가져와서 [Export("initWithCoder:"] 특성 선언으로 데코레이트하는 동일한 서명으로 생성자를 구현해야 합니다.

이 개체의 상태는 도우미 메서드인 EncodeTo를 사용하여 serialize할 수도 있습니다.

적용 대상

HKObject(NSObjectFlag)

초기화를 건너뛰고 개체만 할당하기 위해 파생 클래스에서 를 호출하는 생성자입니다.

protected HKObject (Foundation.NSObjectFlag t);
new HealthKit.HKObject : Foundation.NSObjectFlag -> HealthKit.HKObject

매개 변수

t
NSObjectFlag

사용되지 않는 sentinel 값은 NSObjectFlag.Empty를 전달합니다.

설명

이 생성자는 관리 코드에서 개체를 완전히 구성하고 런타임에서 NSObject를 할당하고 초기화하려고 할 때 파생 클래스에서 호출해야 합니다. Objective-C에서 사용하는 2단계 초기화 프로세스를 구현하는 데 필요하며, 첫 번째 단계는 개체 할당을 수행하는 것이며, 두 번째 단계는 개체를 초기화하는 것입니다. 개발자가 NSObjectFlag.Empty를 사용하는 생성자를 호출할 때 NSObject까지의 직접 경로를 활용하여 개체의 메모리를 할당하고 Objective-C 및 C# 개체를 함께 바인딩할 뿐입니다. 개체의 실제 초기화는 개발자에게 달려 있습니다.

이 생성자는 일반적으로 바인딩 생성기에서 개체를 할당하는 데 사용되지만 실제 초기화가 수행되지 않도록 합니다. 할당이 수행되면 생성자는 개체를 초기화해야 합니다. 바인딩 생성기에서 생성된 생성자를 사용하면 "init" 메서드 중 하나를 수동으로 호출하여 개체를 초기화합니다.

NSObjectFlag.Empty 경로를 사용하여 연결된 경우 개체를 완전히 초기화하는 것은 개발자의 책임입니다.

일반적으로 개발자의 생성자가 NSObjectFlag.Empty 기본 구현을 호출하는 경우 Objective-C init 메서드를 호출해야 합니다. 그렇지 않은 경우 개발자는 대신 클래스의 적절한 생성자에 연결해야 합니다.

인수 값은 무시되며 단지 실행되는 유일한 코드가 기본 NSObject 할당 및 런타임 형식 등록임을 확인합니다. 일반적으로 체인은 다음과 같습니다.

//
// The NSObjectFlag merely allocates the object and registers the
// C# class with the Objective-C runtime if necessary, but no actual
// initXxx method is invoked, that is done later in the constructor
//
// This is taken from Xamarin.iOS's source code:
//
[Export ("initWithFrame:")]
public UIView (System.Drawing.RectangleF frame) : base (NSObjectFlag.Empty)
{
// Invoke the init method now.
	var initWithFrame = new Selector ("initWithFrame:").Handle;
	if (IsDirectBinding)
		Handle = ObjCRuntime.Messaging.IntPtr_objc_msgSend_CGRect (this.Handle, initWithFrame, frame);
	else
		Handle = ObjCRuntime.Messaging.IntPtr_objc_msgSendSuper_CGRect (this.SuperHandle, initWithFrame, frame);
}

적용 대상

HKObject(IntPtr)

관리되지 않는 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

protected internal HKObject (IntPtr handle);
new HealthKit.HKObject : nativeint -> HealthKit.HKObject

매개 변수

handle
IntPtr

nativeint

관리되지 않는 개체에 대한 포인터(핸들)입니다.

설명

이 생성자는 런타임 인프라(GetNSObject(IntPtr))에서 호출되어 관리되지 않는 Objective-C 개체에 대한 포인터에 대한 새 관리형 표현을 만듭니다. 개발자는 이 메서드를 직접 호출하면 안 됩니다. 대신 GetNSObject 메서드를 호출하면 관리되는 개체의 두 인스턴스가 동일한 네이티브 개체를 가리키지 못하게 됩니다.

적용 대상