Compartir a través de


NSObjectFlag Clase

Definición

Clase sentinel usada por el marco MonoTouch.

public class NSObjectFlag
type NSObjectFlag = class
Herencia
NSObjectFlag

Comentarios

El único propósito de la clase NSObjectFlag es usarse como centinela en la jerarquía de clases NSObject para asegurarse de que la inicialización del objeto real solo se produce en NSObject.

Al encadenar los constructores mediante NSObjectFlag.Empty lo único que tendrá lugar es la asignación de la instancia de objeto, no se realizarán llamadas a ninguno de los métodos init: en las clases base. Si el código depende de esto para la inicialización, es responsable de llamar directamente al método init adecuado. Por ejemplo:

// 
// 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);
	}
}

Como alternativa, si necesita una clase base para inicializarse, debe llamar a uno de los otros constructores que toman algunos parámetros.

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.
	}
}

Campos

Empty

Instancia de Sentinel.

Se aplica a