Freigeben über


NSObjectFlag Klasse

Definition

Sentinel-Klasse, die vom MonoTouch-Framework verwendet wird.

public class NSObjectFlag
type NSObjectFlag = class
Vererbung
NSObjectFlag

Hinweise

Der einzige Zweck der NSObjectFlag-Klasse besteht darin, als Sentinel in der NSObject-Klassenhierarchie verwendet zu werden, um sicherzustellen, dass die tatsächliche Objektinitialisierung nur in NSObject erfolgt.

Wenn Sie Ihre Konstruktoren mit NSObjectFlag.Empty verketten, wird nur die Zuordnung der Objektinstanz durchgeführt, es werden keine Aufrufe der init:-Methoden in Basisklassen ausgeführt. Wenn Ihr Code für die Initialisierung davon abhängig ist, sind Sie dafür verantwortlich, die richtige init-Methode direkt aufzurufen. Zum Beispiel:

// 
// 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'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_RectangleF (this.Handle, initWithFrame, frame);
	} else {
		Handle = ObjCRuntime.Messaging.IntPtr_objc_msgSendSuper_RectangleF (this.SuperHandle, initWithFrame, frame);
	}
}

Wenn Sie eine Basisklasse zum Initialisieren benötigen, sollten Sie alternativ einen der anderen Konstruktoren aufrufen, die einige Parameter übernehmen.

class MyViw : UIView {
	[Export ("initWithFrame:")]
	public MyView (RectangleF frame) : base (frame)
	{
		// this initialized MyView by calling the UIView constructor
		// that initializes the object from a RectangleF frame.
	}
}

Felder

Empty

Sentinel-Instanz.

Gilt für: