Partager via


NSObjectFlag Classe

Définition

Classe Sentinel utilisée par l’infrastructure MonoTouch.

public class NSObjectFlag
type NSObjectFlag = class
Héritage
NSObjectFlag

Remarques

Le seul objectif de la classe NSObjectFlag est d’être utilisée comme sentinelle dans la hiérarchie de classe NSObject pour garantir que l’initialisation réelle de l’objet se produit uniquement dans NSObject.

Lorsque vous chaînez vos constructeurs à l’aide de NSObjectFlag.Empty, la seule chose qui se produit est l’allocation de l’instance d’objet, aucun appel à l’une des méthodes init : dans les classes de base, n’est effectué. Si votre code en dépend pour l’initialisation, vous êtes responsable d’appeler directement la méthode init appropriée. Par exemple :

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

Si vous avez besoin d’une classe de base pour s’initialiser, vous devez également appeler l’un des autres constructeurs qui prennent certains paramètres.

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

Champs

Empty

Instance Sentinel.

S’applique à