共用方式為


NSObjectFlag 類別

定義

MonoTouch 架構所使用的 Sentinel 類別。

public class NSObjectFlag
type NSObjectFlag = class
繼承
NSObjectFlag

備註

NSObjectFlag 類別的唯一用途是當做 NSObject 類別階層中的 sentinel 使用,以確保實際的物件初始化只會發生在 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 實例。

適用於