NSObjectFlag 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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 實例。 |