共用方式為


NSObject 類別

定義

對應至 Objective-C 物件之所有系結物件的基類。

[Foundation.Register("NSObject", true)]
public class NSObject : Foundation.INSObjectProtocol, IDisposable, IEquatable<Foundation.NSObject>
type NSObject = class
    interface INSObjectProtocol
    interface INativeObject
    interface IDisposable
    interface IEquatable<NSObject>
繼承
NSObject
衍生
屬性
實作

備註

這是用來將 Objective-C 類別系結至 C# 類別的基類。 只有來自 NSObject 的子類別化會產生可傳遞至 Objective-C 的類別。

C# NSObject 類別及其子類別是基礎 Objective-C 實例的 Managed 標記法。 Unmanaged 程式碼 Objective-C 物件的指標會儲存在 屬性中 Handle

請務必注意,目前編譯器不支援 NSObject 的泛型子類別。

類別註冊

當您建立 NSObject 的子類別時,此子類別會根據實作詳細資料的完整 .NET typename,向 Objective-C 執行時間註冊名稱。 如果您需要確保 C# 類別是以 Objective-C 執行時間中的特定名稱公開,您可以將套用至類別,並指定您想要類別擁有的名稱。

使用 Interface Builder XIB 和 Storyboard 檔案時,或當您使用 Objective-C 序列化設定時,或當您使用 Objective-C 序列化設定 (,例如使用 NSCoder) 時,通常會使用上述方法參考類別。

//
// This exposes the C# class _MySampleView as the Objective-C MyView
//
[Export ("MyView")]
public class _MySampleView : UIView {

}

Objective-C 方法

一般而言,MonoTouch 類別會將一個對應到基礎 Objective-C 類別。 例如,C# 類別 「MonoTouch.Foundation.NSObject」 會對應至 Objective-C 「NSObject」 類別。 但方法不同。 Objective-C 方法無法妥善轉譯為 C# 方法,因此它們一般已改變,以符合 C# 語言、C# 慣用語和.NET Framework設計指導方針。

Objective-C 方法會以 C# 呈現為已套用特殊的虛擬方法。 編譯器會使用這個屬性,將 C# 名稱對應至 Objective-C 名稱。 這些屬性會顯示在每個函式的 API 檔中,以協助您識別特定 C# 方法所呼叫的 Objective-C 方法。

若要改變您使用標準 C# 慣用語的類別行為:建立子類別,並覆寫您想要改變及使用「base」 的方法。 選擇性地呼叫基類的語言功能。

public class MyView : UISlider {
	public override void Draw (RectangleF rect)
	{
		// Let the base class draw first
		base.Draw (rect);

		// Our custom code
		var ctx = UIGraphics.GetCurrentContext ();
		UIColor.Gray.SetColor ();
		ctx.StrokeEllipseInRect (rect);
	}
}

根據預設,只有已覆寫的方法會公開給 Objective-C 世界。 如果您想要向 Objective-C 世界公開任意 C# 方法,您必須將套用至公用方法。 這可以同時處理靜態和實例方法。 套用 屬性之後,方法會公開至 Objective-C,而且執行時間所支援的標準資料類型封送處理作業可供這些方法使用。

//
// Exposes the class StringUtilities to Objective-C with the 
// method:
//    - (NSString *) joinArray:(NSArray *) stringArray withSeparator:(NSString *sep);
//
// Used like this:
//   id utilities = [[StringUtilities alloc] init];
//   NSLog (@"Joined: %@", [utilities joinArray:users withSeparator:@", "]);
//
public class StringUtilities : NSObject {
	[Export ("joinArray:withSeparator:")]
	public string Join (string [] array, string separator)
	{
		return string.Join (separator, array);
	}
}

生命週期

C# NSObject 及其子類別是基礎 Objective-C 物件的 Managed 包裝函式。 當您使用 「new」 運算子建立新的實例時,或當現有的 Unmanaged 物件呈現至 C# 世界時,會從 C# 建立這些實例。

當您使用 「new」 運算子從 C# 建立物件時,物件一開始會由 C# 擁有,而 C# 會保留物件的參考。 只有在垃圾收集行程判斷沒有暫止的 Managed 參考時,或當您在物件上手動呼叫 Dispose 方法時,才會卸載此參考。

當您叫用方法或傳回 NSObject 的屬性時,也會視需要建立 C# NSObject。 此時,執行時間會查看物件快取,並判斷指定的 Objective-C NSObject 是否已呈現至受控世界。 如果物件已呈現,則會傳回現有的物件,否則會叫用接受 IntPtr 做為參數的建構函式來建構物件。

單純的「對等」架構物件 (那些只是 Objective-C 物件的 C# 標記法的物件,而且沒有額外的 Managed 關聯狀態,) 可以使用先前所述的建構函式,依需求重新建立執行時間。

NSObjects 的使用者子類別通常包含 C# 狀態,因此每當 Objective-C 執行時間對其中一個物件執行「保留」作業時,執行時間都會建立 GCHandle,讓 Managed 物件保持運作,即使沒有 C# 可見的物件參考也一樣。 這可簡化預約,因為狀態會自動為您保留。

NSObject 上的 Dispose 作業一律會卸載基礎 Objective-C 物件的參考,但不會終結 Managed 狀態,這只會在 Managed 程式碼和 Unmanaged 程式碼都釋放物件時發生。 這與 .NET 稍有不同,因為在處置物件之後,在 .NET 上,就無法叫用物件上的任何方法,因為它被視為無用。 這不是 NSObjects 的情況。

採用通訊協定

在 MonoTouch 中,大部分 Objective-C 通訊協定都會對應至已套用 T:ObjCRuntime.ModelAttribute的類別。 而採用通訊協定的方式是子類別化和覆寫您想要採用的方法。

在某些情況下,您想要自行採用臨機操作通訊協定。 如果您需要採用 Objective-C 通訊協定,您應該在 類別上使用 AdoptsAttribute ,並提供您想要採用的通訊協定名稱。 一般而言,採用通訊協定時,您也必須列出您使用所採用的所有 Objective-C 選取器。

[Adopts ("NSLocking")]
public class MyLockeingObject : NSObject {
	[Export ("lock")]
	public void Lock ()
	{
		// ...
	}

	[Export ("unlock")]
	public void Unlock ()
	{
		// ...
	}
}

機碼值編碼

機碼值編碼是一種機制,可讓您依其名稱存取物件的屬性,而不是使用 C# 方法直接存取它們。

若要將 C# 屬性公開至Key-Value程式碼撰寫系統,您只需要將新增至屬性。 名稱只能包含 ASCII 字元、以小寫字母開頭,且不得包含任何空格。

public class CircleLayer : CALayer {
	[Export ("radius")]
	public double Radius { get; set; }

	// ...
}

您可以使用 Foundation.ValueForKey (Foundation.NSString) ;*方法來查閱屬性,並使用 M:Foundation.SetValueForKey (Foundation.NSObject、Foundation.NSString) ;*「方法來設定指定屬性的值。 例如,您可以呼叫 foo。ValueForKey (「user」) ,以擷取 物件中使用者屬性的值。

此外,您可以使用索引鍵路徑讓執行時間重複呼叫 ValueForKey 或 SetValueForKey。 您可以使用點分隔索引鍵。 例如,keypath 「user.address.phone.mobile」 會要求使用者屬性,然後在使用者上要求位址屬性,然後要求位址上的電話屬性,最後要求手機上的行動屬性,最後使用結果做為值。 您可以使用 M:Foundation.ValueForKeyPath (Foundation.NSString) ;*來查閱使用索引鍵路徑的屬性, 並使用 M:Foundation.SetValueForKeyPath (Foundation.NSObject、Foundation.NSString) ;*來設定值。

使用索引鍵路徑時,如果查閱失敗, SetValueForUndefinedKey(NSObject, NSString) 則會在設定值時叫用 ,並在 ValueForUndefinedKey(NSString) 查閱值時叫用 。 這兩種方法預設都會引發 Objective-C 例外狀況,您可以藉由覆寫方法來改變該行為。

觀察索引鍵值

索引鍵值觀察是由 NSObject 所實作的機制,可用來監視透過機碼值編碼系統對 NSObject 所做的變更。

若要讓類別觀察通知,您必須覆寫 ObserveValue(NSString, NSObject, NSDictionary, IntPtr) 方法,以特定索引鍵路徑的值變更相關資訊來叫用此方法。 然後,您可以使用 AddObserver(NSObject, NSString, NSKeyValueObservingOptions, IntPtr) 開始觀察變更,以及 RemoveObserver(NSObject, NSString, IntPtr) 停止接收通知的方法。

建構函式

NSObject()

預設建構函式,這個建構函式會初始化這個類別的新實例,不含任何參數。

NSObject(IntPtr)

建立 Unmanaged 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。

NSObject(IntPtr, Boolean)

建立 Unmanaged 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。

NSObject(NSObjectFlag)

呼叫衍生類別的建構函式,以略過初始化,並只配置 物件。

欄位

MonoMacAssembly
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

MonoTouchAssembly
已淘汰.

指向 montoouch 元件。

PlatformAssembly

對應至 Objective-C 物件之所有系結物件的基類。

屬性

ChangeIndexesKey

表示與常數 NSKeyValueChangeIndexesKey 相關聯的值

ChangeKindKey

表示與常數 NSKeyValueChangeKindKey 相關聯的值

ChangeNewKey

表示與常數 NSKeyValueChangeNewKey 相關聯的值

ChangeNotificationIsPriorKey

ChangeNotificati 的通知常數

ChangeOldKey

表示與常數 NSKeyValueChangeOldKey 相關聯的值

Class

對應至 Objective-C 物件之所有系結物件的基類。

ClassHandle

這個類別的控制碼。

DebugDescription

此物件的開發人員有意義描述。

Description

物件的描述,ToString 的 Objective-C 版本。

Handle

處理非受控物件標記法) (指標。

IsDirectBinding

對應至 Objective-C 物件之所有系結物件的基類。

IsProxy

對應至 Objective-C 物件之所有系結物件的基類。

RetainCount

傳回物件的目前 Objective-C 保留計數。

Self

對應至 Objective-C 物件之所有系結物件的基類。

Superclass

對應至 Objective-C 物件之所有系結物件的基類。

SuperHandle

用來表示這個 NSObject 基類中方法的控制碼。

Zone

對應至 Objective-C 物件之所有系結物件的基類。

方法

AddObserver(NSObject, NSString, NSKeyValueObservingOptions, IntPtr)

使用 NSString keyPath) 在外部 (註冊要觀察的物件。   觀察到的變更會分派至觀察者的 物件 ObserveValue(NSString, NSObject, NSDictionary, IntPtr) 方法。

AddObserver(NSObject, String, NSKeyValueObservingOptions, IntPtr)

使用字串 keyPath) 在外部 (註冊要觀察的物件。   觀察到的變更會分派至觀察者的 物件 ObserveValue(NSString, NSObject, NSDictionary, IntPtr) 方法。

AddObserver(NSString, NSKeyValueObservingOptions, Action<NSObservedChange>)

使用任意方法註冊要從外部觀察到的物件。

AddObserver(String, NSKeyValueObservingOptions, Action<NSObservedChange>)

使用任意方法註冊要從外部觀察到的物件。

Alloc(Class)

對應至 Objective-C 物件之所有系結物件的基類。

AutomaticallyNotifiesObserversForKey(String)

這個物件是否提供指定索引鍵的索引鍵/值通知。

AwakeFromNib()

從 nib 檔案載入物件之後呼叫。 覆寫程式必須呼叫基底。AwakeFromNib () 。

BeginInvokeOnMainThread(Action)

對應至 Objective-C 物件之所有系結物件的基類。

BeginInvokeOnMainThread(Selector, NSObject)

在主要 UI 執行緒上以非同步方式叫用指定的程式碼。

Bind(NSString, NSObject, String, NSDictionary)

對應至 Objective-C 物件之所有系結物件的基類。

Bind(String, NSObject, String, NSDictionary)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

BindingInfo(String)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

BindingOptionDescriptions(String)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

BindingValueClass(String)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

CancelPreviousPerformRequest(NSObject)

解除擱置的時間延遲叫用或 PerformSelector。

CancelPreviousPerformRequest(NSObject, Selector, NSObject)

解除擱置的時間順延強制程式。

CommitEditing()

對應至 Objective-C 物件之所有系結物件的基類。

CommitEditing(NSObject, Selector, IntPtr)

對應至 Objective-C 物件之所有系結物件的基類。

ConformsToProtocol(IntPtr)

叫用 以判斷這個物件是否實作指定的通訊協定。

Copy()

執行基礎 Objective-C 物件的複本。

DangerousAutorelease()

對應至 Objective-C 物件之所有系結物件的基類。

DangerousRelease()

對應至 Objective-C 物件之所有系結物件的基類。

DangerousRetain()

對應至 Objective-C 物件之所有系結物件的基類。

DidChange(NSKeyValueChange, NSIndexSet, NSString)

指出對多關聯性的索引發生變更。

DidChange(NSString, NSKeyValueSetMutationKind, NSSet)

對應至 Objective-C 物件之所有系結物件的基類。

DidChangeValue(String)

表示在指定的索引鍵上發生變更。

Dispose()

釋放 NSObject 物件所使用的資源。

Dispose(Boolean)

釋放 NSObject 物件所使用的資源。

DoesNotRecognizeSelector(Selector)

表示這個物件無法辨識指定的選取器。

Equals(NSObject)

對應至 Objective-C 物件之所有系結物件的基類。

Equals(Object)

對應至 Objective-C 物件之所有系結物件的基類。

ExposedBindings()

對應至 Objective-C 物件之所有系結物件的基類。

Finalize()

NSObject 物件的完成項

FromObject(Object)

將物件方塊放入 NSObject。

GetBindingInfo(NSString)

對應至 Objective-C 物件之所有系結物件的基類。

GetBindingOptionDescriptions(NSString)

對應至 Objective-C 物件之所有系結物件的基類。

GetBindingValueClass(NSString)

對應至 Objective-C 物件之所有系結物件的基類。

GetDefaultPlaceholder(NSObject, NSString)

對應至 Objective-C 物件之所有系結物件的基類。

GetDefaultPlaceholder(NSObject, String)

對應至 Objective-C 物件之所有系結物件的基類。

GetDictionaryOfValuesFromKeys(NSString[])

擷取指定索引鍵的值。

GetHashCode()

產生目前實例的雜湊碼。

GetKeyPathsForValuesAffecting(NSString)

索引鍵路徑,其值會影響指定索引鍵的值。

GetMethodForSelector(Selector)

對應至 Objective-C 物件之所有系結物件的基類。

GetNativeField(String)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

GetNativeHash()

對應至 Objective-C 物件之所有系結物件的基類。

Init()

對應至 Objective-C 物件之所有系結物件的基類。

InitializeHandle(IntPtr)

對應至 Objective-C 物件之所有系結物件的基類。

InitializeHandle(IntPtr, String)

對應至 Objective-C 物件之所有系結物件的基類。

Invoke(Action, Double)

對應至 Objective-C 物件之所有系結物件的基類。

Invoke(Action, TimeSpan)

對應至 Objective-C 物件之所有系結物件的基類。

InvokeInBackground(Action)

對應至 Objective-C 物件之所有系結物件的基類。

InvokeOnMainThread(Action)

對應至 Objective-C 物件之所有系結物件的基類。

InvokeOnMainThread(Selector, NSObject)

在主要 UI 執行緒上,以同步方式叫用指定的程式碼。

IsEqual(NSObject)

對應至 Objective-C 物件之所有系結物件的基類。

IsKindOfClass(Class)

對應至 Objective-C 物件之所有系結物件的基類。

IsMemberOfClass(Class)

對應至 Objective-C 物件之所有系結物件的基類。

IsNewRefcountEnabled()

內部 -- 判斷 MonoTouch 是否使用新的切換參考系統

MarkDirty()

將一般對等物件升階 (IsDirectBinding 為 true) 為 toggleref 物件。

MutableCopy()

建立指定之 NSObject 的可變動複本。

ObjectDidEndEditing(NSObject)

對應至 Objective-C 物件之所有系結物件的基類。

ObserveValue(NSString, NSObject, NSDictionary, IntPtr)

表示相對於這個物件的指定 keyPath 的值已變更。

PerformSelector(Selector)

對應至 Objective-C 物件之所有系結物件的基類。

PerformSelector(Selector, NSObject)

對應至 Objective-C 物件之所有系結物件的基類。

PerformSelector(Selector, NSObject, Double)

叫用目前實例上的選取器,如果 obj 不是 Null,它會傳遞這個做為其單一參數。

PerformSelector(Selector, NSObject, Double, NSString[])

對應至 Objective-C 物件之所有系結物件的基類。

PerformSelector(Selector, NSObject, NSObject)

對應至 Objective-C 物件之所有系結物件的基類。

PerformSelector(Selector, NSThread, NSObject, Boolean)

對應至 Objective-C 物件之所有系結物件的基類。

PerformSelector(Selector, NSThread, NSObject, Boolean, NSString[])

對應至 Objective-C 物件之所有系結物件的基類。

PrepareForInterfaceBuilder()

對應至 Objective-C 物件之所有系結物件的基類。

RemoveObserver(NSObject, NSString)

停止指定的觀察者接收指定 keyPath 變更值的進一步通知。

RemoveObserver(NSObject, NSString, IntPtr)

停止指定的觀察者接收指定 keyPath 和內容的變更值進一步通知。

RemoveObserver(NSObject, String)

停止指定的觀察者接收指定 keyPath 變更值的進一步通知。

RemoveObserver(NSObject, String, IntPtr)

停止指定的觀察者接收指定 keyPath 和內容的變更值進一步通知。

RespondsToSelector(Selector)

這個物件是否辨識指定的選取器。

SetDefaultPlaceholder(NSObject, NSObject, NSString)

對應至 Objective-C 物件之所有系結物件的基類。

SetDefaultPlaceholder(NSObject, NSObject, String)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

SetNativeField(String, NSObject)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

SetNilValueForKey(NSString)

將指定索引鍵的值設定為 null。

SetValueForKey(NSObject, NSString)

將索引鍵所指定的屬性值設定為指定的值。

SetValueForKeyPath(IntPtr, NSString)

建立 Unmanaged 物件的 Managed 標記法時所使用的建構函式;由執行時間呼叫。

SetValueForKeyPath(NSObject, NSString)

設定可以使用索引鍵路徑到達的屬性值。

SetValueForUndefinedKey(NSObject, NSString)

表示嘗試將值寫入未定義的索引鍵。 如果未覆寫,會引發 NSUndefinedKeyException。

SetValuesForKeysWithDictionary(NSDictionary)

將這個 NSObject 的值設定為指定字典中的值。

ToString()

傳回目前實例值的字串表示。

Unbind(NSString)

對應至 Objective-C 物件之所有系結物件的基類。

Unbind(String)
已淘汰.

對應至 Objective-C 物件之所有系結物件的基類。

ValueForKey(NSString)

傳回與指定索引鍵相關聯的屬性值。

ValueForKeyPath(NSString)

傳回可以使用 keypath 到達的屬性值。

ValueForUndefinedKey(NSString)

表示嘗試讀取未定義索引鍵的值。 如果未覆寫,會引發 NSUndefinedKeyException。

WillChange(NSKeyValueChange, NSIndexSet, NSString)

表示指定索引鍵中指定索引的值即將變更。

WillChange(NSString, NSKeyValueSetMutationKind, NSSet)

對應至 Objective-C 物件之所有系結物件的基類。

WillChangeValue(String)

表示指定索引鍵的值即將變更。

擴充方法

ObjectDidBeginEditing(NSObject, INSEditor)

對應至 Objective-C 物件之所有系結物件的基類。

ObjectDidEndEditing(NSObject, INSEditor)

對應至 Objective-C 物件之所有系結物件的基類。

GetValidModes(NSObject, NSFontPanel)

對應至 Objective-C 物件之所有系結物件的基類。

ValidateToolbarItem(NSObject, NSToolbarItem)

對應至 Objective-C 物件之所有系結物件的基類。

GetDebugDescription(INSObjectProtocol)

對應至 Objective-C 物件之所有系結物件的基類。

AcceptsPreviewPanelControl(NSObject, QLPreviewPanel)

對應至 Objective-C 物件之所有系結物件的基類。

BeginPreviewPanelControl(NSObject, QLPreviewPanel)

對應至 Objective-C 物件之所有系結物件的基類。

EndPreviewPanelControl(NSObject, QLPreviewPanel)

對應至 Objective-C 物件之所有系結物件的基類。

GetAccessibilityCustomRotors(NSObject)

取得物件適用的 this 物件陣列 UIAccessibilityCustomRotor

SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[])

設定適用于 this 物件的陣列 UIAccessibilityCustomRotor

適用於

另請參閱