NSObject Class Reference

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

トップ> リファレンス > データ型とコレクション > NSObjectクラスリファレンス

NSObject クラスリファレンス (翻訳元)


このページの最終更新:2010-02-12
ADCの最終更新:2009-08-28


継承するクラス なし(このクラスはルートクラスです)
準拠しているプロトコル NSObject
フレームワーク /System/Library/Frameworks/Foundation.framework?
使用可能な環境 Mac OS X 10.0以降
コンパニオンガイド Cocoa Fundamentals Guide
宣言ファイル NSArchiver.h
NSClassDescription.h
NSKeyedArchiver.h
NSObject.h
NSObjectScripting.h
NSPortCoder.h
NSRunLoop.h
NSScriptClassDescription.h
NSThread.h
サンプルコード CoreRecipes?
From A View to A Movie?
From A View to A Picture?
ImageClient?
Sketch+Accessibility?


概観(Overview)


NSObjectはObjective-Cクラス階層におけるほとんどのクラスのルートクラスです。NSObjectクラスを通して、オブジェクトはランタイムの基本的インターフェースと、Objective-Cオブジェクトとして振る舞う能力を継承します。

セレクタ(Selectors)

NSObjectにはObjective-Cランタイムを活用する為の特別なメソッドがあります。例えば、クラスやインスタンスが特定のメソッドに反応するかを呼び出す前に知ることができます。また、perform...メソッドなどを使って、メソッドの実装を呼び出すことができます。動的バインドを使えないので通常は推奨されませんが、メソッドの実装を関数のように呼び出すこともできます。
これらやこのクラスの他のメソッドはSEL型を引数にとります。効率化の為に、コンパイル後のコードではメソッドを表すのにASCIIのフルネームが使われることはありません。代わりに、コンパイラは、ランタイムではセレクタと呼ばれるユニークな識別記号を使います。メソッドのセレクタは@selector()ディレクティブを使って得ることができます。
SEL method = @selector(isEqual:);
instanceMethodForSelector:クラスメソッドとmethodForSelector:インスタンスメソッドはIMP型のメソッドの実装を返します。IMP型はid型を戻り値に持ち、可変数(それに加えてすべてのメソッドに渡される、二つの「暗黙の」引数selfと_cmd)の引数をとる関数ポインタとして定義されています。
typedef id (*IMP)(id, SEL, ...);
この定義はこれらのメソッドが返す関数ポインタのプロトタイプとして使用します。これはオブジェクトを引数と戻り値に持つメソッドには十分です。しかし、セレクタがid型以外の引数や戻り値を持つ場合、この型の関数はプロトタイプには適しません。適切なプロトタイプがなければ、コンパイラはfloatをdoubleに、charをintにして扱おうとします。これは実装が予期しないことであり、呼ばれるメソッドは異なった(誤った)働きをするでしょう。
これを回避する為には、独自のプロトタイプを提供する必要があります。以下の例では、test変数の宣言でisEqual:メソッドの実装のプロトタイプを提供しています。test変数はBOOL型を返し、id型(それに加え2つの「暗黙の」引数)を引数に持つ関数ポインタとして定義されています。methodForSelector:メソッドが返す値は同じ型の関数ポインタにキャストされています。
BOOL (*test)(id, SEL, id);
test = (BOOL (*)(id, SEL, id))[target methodForSelector:@selector(isEqual:)];

while ( !test(target, @selector(isEqual:), someObject) ) {
...
}
時には、変数宣言とmethodForSelector:が返す関数ポインタをキャストするのに使う(IMPによく似た)型を明確に定義することもできます。以下の例では、EqualIMP型をこの目的で宣言しています。
typedef BOOL (*EqualIMP)(id, SEL, id);
EqualIMP test;
test = (EqualIMP)[target methodForSelector:@selector(isEqual:)];

while ( !test(target, @selector(isEqual:), someObject) ) {
...
}
どちらの方法でも、methodForSelector:の戻り値を適切な関数の型にキャストすることが重要です。単にmethodForSelector:が返した関数を呼んで、その戻り値を目的の型にキャストするだけでは不十分です。そうすることで、エラーが発生することもあります。

採用しているプロトコル(Adopted Protocols)


NSObject
   – autorelease
   – class
   – conformsToProtocol:
   – description
   – hash
   – isEqual:
   – isKindOfClass:
   – isMemberOfClass:
   – isProxy
   – performSelector:
   – performSelector:withObject:
   – performSelector:withObject:withObject:
   – release
   – respondsToSelector:
   – retain
   – retainCount
   – self
   – superclass
   – zone


このクラスでできること(Tasks)

クラスの初期化(Initializing a Class)

   + initialize
   + load

オブジェクトの作成、複製、削除(Creating, Copying, and Deallocating Objects)

   + new
   + alloc
   + allocWithZone:
   – init
   – copy
   + copyWithZone:
   – mutableCopy
   + mutableCopyWithZone:
   – dealloc
   – finalize

クラスの識別(Identifying Classes)

   + class
   + superclass
   + isSubclassOfClass:

クラス機能の確認(Testing Class Functionality)

   + instancesRespondToSelector:

準拠するプロトコルの確認(Testing Protocol Conformance)

   + conformsToProtocol:

メソッド情報の取得(Obtaining Information About Methods)

   – methodForSelector:
   + instanceMethodForSelector:
   + instanceMethodSignatureForSelector:
   – methodSignatureForSelector:

オブジェクトの記述(Describing Objects)

   + description

ポージング(Posing)

   + poseAsClass: Deprecated in Mac OS X v10.5

(Discardable Content Proxy Support)

   – autoContentAccessingProxy

メッセージ送信(Sending Messages)

   – performSelector:withObject:afterDelay:
   – performSelector:withObject:afterDelay:inModes:
   – performSelectorOnMainThread:withObject:waitUntilDone:
   – performSelectorOnMainThread:withObject:waitUntilDone:modes:
   – performSelector:onThread:withObject:waitUntilDone:
   – performSelector:onThread:withObject:waitUntilDone:modes:
   – performSelectorInBackground:withObject:
   + cancelPreviousPerformRequestsWithTarget:
   + cancelPreviousPerformRequestsWithTarget:selector:object:

メッセージ転送(Forwarding Messages)

   – forwardingTargetForSelector:
   – forwardInvocation:

メソッドの動的解決(Dynamically Resolving Methods)

   + resolveClassMethod:
   + resolveInstanceMethod:

エラー操作(Error Handling)

   – doesNotRecognizeSelector:

アーカイブ化(Archiving)

   – awakeAfterUsingCoder:
   – classForArchiver
   – classForCoder
   – classForKeyedArchiver
   + classFallbacksForKeyedArchiver
   + classForKeyedUnarchiver
   – classForPortCoder
   – replacementObjectForArchiver:
   – replacementObjectForCoder:
   – replacementObjectForKeyedArchiver:
   – replacementObjectForPortCoder:
   + setVersion:
   + version

クラス記述の補助(Working with Class Descriptions)

   – attributeKeys
   – classDescription
   – inverseForRelationshipKey:
   – toManyRelationshipKeys
   – toOneRelationshipKeys

アップルスクリプト(Scripting)

   – classCode
   – className
   – copyScriptingValue:forKey:withProperties:
   – newScriptingObjectOfClass:forValueForKey:withContentsValue:properties:
   – scriptingProperties
   – setScriptingProperties:
   – scriptingValueForSpecifier:

クラスメソッド


alloc

クラスの新しいインスタンスを返します。
 + (id)alloc
戻り値
  • クラスの新しいインスタンス。
解説
  • 新しいインスタンスのisaインスタンス変数はクラスを表す構造体データに初期化されます。また、その他のインスタンス変数の領域は0で初期化されます。新しいインスタンスはデフォルトのゾーンに確保されます。特定のゾーンに確保することを明確にしたいときはallocWithZone:メソッドを使ってください。
  • init...メソッドは初期化処理を完了するために必ず使用されなければなりません。以下に例を示します。
TheClass *newObject = [[TheClass alloc] init];
  • サブクラスは初期化コードを含める為にallocメソッドをオーバーライドするべきではありません。代わりに、クラス特有のinit...メソッドを使用するべきです。newメソッドによく似た、生成と初期化を統合したクラスメソッドを作ることもできます。
特に気をつけること
  • メモリ管理(ガベージコレクションではない)を使用している場合、このメソッドは保持されたオブジェクトを返します。このオブジェクトはリファレンスカウンタが1で自動解放されません。このメソッドの呼び出し元はreleaseやautoreleaseメソッドを使ってこのオブジェクトを解放する義務があります。
使用可能な環境
  • Mac OS X v10.0以降
関連項目
  • - init
関係のあるサンプルコード
宣言しているファイル
  • NSObject.h

インスタンスメソッド






+ タグ編集
  • タグ:
  • Cocoa
  • Data Types & Collections
  • リファレンス
  • 未完

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー