NSObject クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。
[Foundation.Register("NSObject", true)]
[System.Runtime.InteropServices.ObjectiveC.ObjectiveCTrackedType]
public class NSObject : Foundation.INSObjectProtocol, IDisposable, IEquatable<Foundation.NSObject>
[<Foundation.Register("NSObject", true)>]
[<System.Runtime.InteropServices.ObjectiveC.ObjectiveCTrackedType>]
type NSObject = class
interface INativeObject
interface IEquatable<NSObject>
interface IDisposable
interface INSObjectProtocol
- 継承
-
NSObject
- 派生
- 属性
- 実装
注釈
これは、Objective-C クラスを C# クラスにバインドするために使用される基本クラスです。 NSObject からサブクラス化するだけで、Objective-C に渡すことができるクラスが生成されます。
C# NSObject クラスとそのサブクラスは、基になる Objective-C インスタンスのマネージド表現です。 オブジェクト Objective-C アンマネージ コードへのポインターは、 Handle プロパティに格納されます。
現時点では、コンパイラでは NSObject のジェネリック サブクラスがサポートされていないことに注意してください。
クラス登録
NSObject のサブクラスを作成すると、このサブクラスは、実装の詳細である完全な.NET型名に基づく名前を持つ Objective-C ランタイムに登録されます。 Objective-C ランタイムで C# クラスが特定の名前で公開されるようにする必要がある場合は、クラスに RegisterAttribute を適用し、クラスに含める名前を指定できます。
上記は、通常、インターフェイス ビルダー XIB ファイルとストーリーボード ファイルを使用する場合、または Objective-C シリアル化セットアップを使用している場合 (たとえば、 NSCoderを使用する場合) に、Objective-C コードで名前でクラスを参照する場合に使用されます。
//
// This exposes the C# class _MySampleView as the Objective-C MyView
//
[Export ("MyView")]
public class _MySampleView : UIView {
}
Objective-C メソッド
一般に、クラスは 1 対 1 を基になる Objective-C クラスにマップします。 たとえば、C# クラス NSObject Objective-C "NSObject" クラスにマップされます。 しかし、メソッドは異なります。 Objective-C メソッドは C# メソッドにうまく変換されないため、一般的には C# 言語、C# のイディオム、および .NET Framework の設計ガイドラインの両方に一致するように変更されています。
Objective-C メソッドは、特殊な ExportAttribute が適用された仮想メソッドとして C# に表示されます。 この属性は、C# 名を Objective-C 名にマップするためにコンパイラによって使用されます。 これらの属性は、特定の C# メソッドが呼び出している Objective-C メソッドを識別するのに役立つ、各関数に関する API ドキュメントに示されています。
クラスの動作を変更するには、標準の C# イディオムを使用します。サブクラスを作成し、"base" を変更して使用するメソッドをオーバーライドします。 必要に応じて基底クラスを呼び出す言語機能。
public class MyView : UISlider {
public override void Draw (CGRect 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 ワールドに公開されます。 任意の C# メソッドを Objective-C ワールドに公開する場合は、パブリック メソッドに ExportAttribute を適用する必要があります。 また、これは静的メソッドとインスタンス メソッドの両方に対して実行できます。 属性が適用されると、メソッドが 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 オブジェクトのマネージド ラッパーです。 これらは、"new" 演算子を使用して新しいインスタンスを作成するとき、または既存のアンマネージド オブジェクトが C# ワールドに表示されるときに、C# から作成されます。
"new" 演算子を使用して C# からオブジェクトを作成すると、オブジェクトは最初は C# によって所有され、C# はオブジェクトへの参照を保持します。 この参照は、ガベージ コレクターが保留中のマネージド参照がないと判断した場合、またはオブジェクトに対して Dispose メソッドを手動で呼び出した場合にのみ削除されます。
C# NSObjects は、NSObject を返すメソッドまたはプロパティを呼び出すときにも、必要に応じて作成されます。 この時点で、ランタイムはオブジェクト キャッシュを調べて、特定の Objective-C NSObject が既にマネージド ワールドに表示されているかどうかを判断します。 オブジェクトが表示されている場合は、既存のオブジェクトが返されます。それ以外の場合は、IntPtr をパラメーターとして受け取るコンストラクターが呼び出され、オブジェクトが構築されます。
フレームワーク オブジェクト (Objective-C オブジェクトの単なる C# 表現であり、追加の管理された関連付けられた状態を持たないオブジェクト) に対する純粋な "ピア" は、前に説明したコンストラクターを使用して、ランタイムによってオンデマンドで再作成できます。
NSObjects のユーザー サブクラスには C# 状態が含まれることがよくあります。そのため、Objective-C ランタイムがこれらのオブジェクトのいずれかに対して "保持" 操作を実行するたびに、ランタイムは、オブジェクトへの C# 参照が存在しない場合でも、マネージド オブジェクトを維持する GCHandle を作成します。 これにより、状態が自動的に保持されるため、予約を大幅に簡略化できます。
NSObject に対する Dispose 操作では、基になる Objective-C オブジェクトへの参照は常に削除されますが、マネージド状態は破棄されません。これは、マネージド コードとアンマネージ コードの両方がオブジェクトを解放した場合にのみ発生します。 これは.NETとは少し異なります。オブジェクトが破棄されると.NET、オブジェクトに対してメソッドを呼び出すことはできません。これは役に立たないと見なされるためです。 これは NSObjects の場合ではありません。
プロトコルの採用
MonoTouch では、ほとんどの Objective-C プロトコルは、 ModelAttribute が適用されているクラスにマップされます。 プロトコルを採用する方法は、採用するメソッドをサブクラス化して上書きする方法です。
まれに、独自にアドホック プロトコルを採用する場合があります。 Objective-C プロトコルを採用する必要がある場合は、クラスで AdoptsAttribute を使用し、採用するプロトコルの名前を指定する必要があります。 通常、プロトコルを採用するときは、 ExportAttributeを使用して採用するすべての Objective-C セレクターを一覧表示する必要もあります。
[Adopts ("NSLocking")]
public class MyLockeingObject : NSObject {
[Export ("lock")]
public void Lock ()
{
// ...
}
[Export ("unlock")]
public void Unlock ()
{
// ...
}
}
キー値のコーディング
キー値のコーディングは、C# メソッドを使用して直接アクセスするのではなく、オブジェクトのプロパティに名前でアクセスできるようにするメカニズムです。
C# プロパティを Key-Value コーディング システムに公開するには、 ExportAttribute をプロパティに追加するだけです。 名前には ASCII 文字のみを含める必要があり、小文字で始まり、スペースを含めることはできません。
public class CircleLayer : CALayer {
[Export ("radius")]
public double Radius { get; set; }
// ...
}
ValueForKey(NSString) メソッドを使用して名前を使用してプロパティを検索し、関数SetValueForKey(NSObject, NSString)メソッドを使用して、指定したプロパティの値を設定します。 たとえば、foo を呼び出します。オブジェクト内のユーザー プロパティの値を取得する ValueForKey ("user")。
さらに、キー パスを使用して、ランタイムで ValueForKey または SetValueForKey を繰り返し呼び出すことができます。 ドットを使用してキーを区切る。 たとえば、キーパス "user.address.phone.mobile" はユーザー プロパティを要求し、ユーザーにアドレス プロパティを要求した後、アドレスの電話プロパティを要求し、最後に電話でモバイル プロパティを要求し、最後に結果を値として使用します。 ValueForKeyPath(NSString)を使用してキーパスを使用してプロパティを検索し、SetValueForKeyPath(NSObject, 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() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| NSObject(NativeHandle, Boolean) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| NSObject(NativeHandle) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| NSObject(NSObjectFlag) |
初期化をスキップし、単にオブジェクトを割り当てるために派生クラスを呼び出すコンストラクター。 |
フィールド
| 名前 | 説明 |
|---|---|
| PlatformAssembly |
プラットフォーム固有の Foundation 型を含むアセンブリを取得します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| AccessibilityAttributedUserInputLabels |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| AccessibilityRespondsToUserInteraction |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| AccessibilityTextualContext |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| AccessibilityUserInputLabels |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ChangeIndexesKey |
定数 'NSKeyValueChangeIndexesKey' に関連付けられている値を表します。 |
| ChangeKindKey |
定数 'NSKeyValueChangeKindKey' に関連付けられている値を表します。 |
| ChangeNewKey |
定数 'NSKeyValueChangeNewKey' に関連付けられている値を表します。 |
| ChangeNotificationIsPriorKey |
定数 'NSKeyValueChangeNotificationIsPriorKey' に関連付けられている値を表します。 |
| ChangeOldKey |
定数 'NSKeyValueChangeOldKey' に関連付けられている値を表します。 |
| Class |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ClassHandle |
このクラスの Objective-C クラス ハンドル。 |
| DebugDescription |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| Description |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ExposedBindings |
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) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| AddObserver(NSObject, String, NSKeyValueObservingOptions, IntPtr) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| AddObserver(NSString, NSKeyValueObservingOptions, Action<NSObservedChange>) |
任意のメソッドを使用して外部で観察されるオブジェクトを登録します。 |
| AddObserver(String, NSKeyValueObservingOptions, Action<NSObservedChange>) |
任意のメソッドを使用して外部で観察されるオブジェクトを登録します。 |
| Alloc(Class) |
指定したクラスの初期化されていないインスタンスを割り当てます。 |
| AutomaticallyNotifiesObserversForKey(String) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| AwakeFromNib() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| BeginInvokeOnMainThread(Action) |
メイン UI スレッドで、指定したアクションを非同期的に呼び出します。 |
| BeginInvokeOnMainThread(Selector, NSObject) |
メイン UI スレッドで指定したコードを非同期的に呼び出します。 |
| Bind(NSString, NSObject, String, NSBindingOptions) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| Bind(NSString, NSObject, String, NSDictionary) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| CancelPreviousPerformRequest(NSObject, Selector, NSObject) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| CancelPreviousPerformRequest(NSObject) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| CommitEditing() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| CommitEditing(NSObject, Selector, IntPtr) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ConformsToProtocol(NativeHandle) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| Copy() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| DangerousAutorelease() |
このオブジェクトの 'autorelease' セレクターを呼び出します。 |
| DangerousRelease() |
このオブジェクトの 'release' セレクターを呼び出します。 |
| DangerousRetain() |
このオブジェクトで 'retain' セレクターを呼び出します。 |
| DidChange(NSKeyValueChange, NSIndexSet, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| DidChange(NSString, NSKeyValueSetMutationKind, NSSet) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| DidChangeValue(String) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| Dispose() |
NSObject オブジェクトによって使用されるリソースを解放します。 |
| Dispose(Boolean) |
このオブジェクトで使用されるリソースを解放します。 |
| DoesNotRecognizeSelector(Selector) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| Equals(NSObject) | |
| Equals(Object) |
指定したオブジェクトが現在の NSObjectと等しいかどうかを判断します。 |
| Finalize() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| FromObject(Object) |
オブジェクトを NSObject にボックス化します。 |
| GetBindingInfo(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| GetBindingOptionDescriptions(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| GetBindingValueClass(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| GetDefaultPlaceholder(NSObject, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| GetDictionaryOfValuesFromKeys(NSString[]) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| GetHashCode() |
現在のインスタンスのハッシュ コードを生成します。 |
| GetKeyPathsForValuesAffecting(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| GetMethodForSelector(Selector) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| GetNativeHash() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| Init() |
Objective-C |
| InitializeHandle(NativeHandle, String) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| InitializeHandle(NativeHandle) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| Invoke(Action, Double) |
指定した遅延の後に、指定したアクションを呼び出します。 |
| Invoke(Action, TimeSpan) |
指定した遅延の後に、指定したアクションを呼び出します。 |
| InvokeInBackground(Action) |
指定したアクションをバックグラウンド スレッドで呼び出します。 |
| InvokeOnMainThread(Action) |
メイン UI スレッドで、指定したアクションを同期的に呼び出します。 |
| InvokeOnMainThread(Selector, NSObject) |
メイン UI スレッドで、指定したコードを同期的に呼び出します。 |
| IsEqual(NSObject) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| IsKindOfClass(Class) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| IsMemberOfClass(Class) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| MarkDirty() |
通常のピア オブジェクト (IsDirectBinding が true) を toggleref オブジェクトに昇格させます。 |
| MutableCopy() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ObjectDidEndEditing(NSObject) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ObserveValue(NSString, NSObject, NSDictionary, IntPtr) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PerformSelector(Selector, NSObject, Double, NSString[]) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PerformSelector(Selector, NSObject, Double) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PerformSelector(Selector, NSObject, NSObject) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PerformSelector(Selector, NSObject) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PerformSelector(Selector, NSThread, NSObject, Boolean, NSString[]) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PerformSelector(Selector, NSThread, NSObject, Boolean) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PerformSelector(Selector) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| PrepareForInterfaceBuilder() |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| RemoveObserver(NSObject, NSString, IntPtr) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| RemoveObserver(NSObject, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| RemoveObserver(NSObject, String, IntPtr) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| RemoveObserver(NSObject, String) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| RespondsToSelector(Selector) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| SetDefaultPlaceholder(NSObject, NSObject, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| SetNilValueForKey(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| SetValueForKey(NSObject, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| SetValueForKeyPath(NativeHandle, NSString) |
特定のキー パスによって識別されるプロパティの値を、指定された値に設定します。 |
| SetValueForKeyPath(NSObject, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| SetValueForUndefinedKey(NSObject, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| SetValuesForKeysWithDictionary(NSDictionary) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ToString() |
現在のインスタンスの値の文字列形式を返します。 |
| Unbind(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ValueForKey(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ValueForKeyPath(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| ValueForUndefinedKey(NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| WillChange(NSKeyValueChange, NSIndexSet, NSString) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| WillChange(NSString, NSKeyValueSetMutationKind, NSSet) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |
| WillChangeValue(String) |
Objective-C オブジェクトにマップされるすべてのバインドされたオブジェクトの基本クラス。 |