Compartilhar via


NSObjectFlag Classe

Definição

Classe Sentinel usada pela estrutura MonoTouch.

public class NSObjectFlag
type NSObjectFlag = class
Herança
NSObjectFlag

Comentários

A única finalidade para a classe NSObjectFlag é ser usada como sentinela na hierarquia de classe NSObject para garantir que a inicialização real do objeto ocorra apenas em NSObject.

Quando você encadeia seus construtores usando NSObjectFlag.Empty, a única coisa que ocorrerá é a alocação da instância do objeto, nenhuma chamada para nenhum dos métodos init: nas classes base será executada. Se o código depender disso para inicialização, você será responsável por chamar o método de inicialização adequado diretamente. Por exemplo:

// 
// 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, se você precisar de uma classe base para se inicializar, deverá chamar um dos outros construtores que levam alguns 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

Instância do Sentinel.

Aplica-se a