次の方法で共有


NSObjectFlag クラス

定義

MonoTouch フレームワークで使用される Sentinel クラス。

public class NSObjectFlag
type NSObjectFlag = class
継承
NSObjectFlag

注釈

NSObjectFlag クラスの唯一の目的は、実際のオブジェクトの初期化が NSObject でのみ行われるようにするために、NSObject クラス階層のセンチネルとして使用することです。

NSObjectFlag.Empty を使用してコンストラクターを連結すると、オブジェクト インスタンスの割り当てだけが実行されます。基底クラスの init: メソッドの呼び出しは実行されません。 コードが初期化に依存している場合は、適切な init メソッドを直接呼び出す必要があります。 次に例を示します。

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

または、それ自体を初期化するために基底クラスが必要な場合は、いくつかのパラメーターを受け取る他のコンストラクターのいずれかを呼び出す必要があります。

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

フィールド

Empty

Sentinel インスタンス。

適用対象