「NSObject Class Reference」の編集履歴(バックアップ)一覧はこちら
「NSObject Class Reference」(2010/02/12 (金) 23:13:52) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
//0.下はいじらない
Tags:&tags()
//1.以下に続けてADCでの分類を書き込みリンクする。「NSHogeのクラスリファレンス」、まで書く
&link_toppage(トップ) > [[リファレンス]] > データ型とコレクション > NSObjectクラスリファレンス
//2.リファレンス日本語名を見出し1で書く。wiki内のリンクで用いられるタイトルになる。翻訳元にもリンクする。
*NSObject クラスリファレンス [[(翻訳元)>http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html]]
//3.翻訳元の最終更新日を書く
このページの最終更新:&date()
ADCの最終更新:2009-08-28
//4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。
//5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck!
//本文開始↓
|BGCOLOR(#eef):継承するクラス |BGCOLOR(#eef):なし(このクラスはルートクラスです)|
|準拠しているプロトコル|[[NSObject>NSObject Protocol Reference]]|
|BGCOLOR(#eef):フレームワーク|BGCOLOR(#eef):/System/Library/Frameworks/[[Foundation.framework]]|
|使用可能な環境|Mac OS X 10.0以降|
|BGCOLOR(#eef):コンパニオンガイド|BGCOLOR(#eef):[[Cocoa Fundamentals Guide]]|
|TOP:宣言ファイル|NSArchiver.h&br()NSClassDescription.h&br()NSKeyedArchiver.h&br()NSObject.h&br()NSObjectScripting.h&br()NSPortCoder.h&br()NSRunLoop.h&br()NSScriptClassDescription.h&br()NSThread.h|
|TOP:BGCOLOR(#eef):サンプルコード|BGCOLOR(#eef):[[CoreRecipes]]&br()[[From A View to A Movie]]&br()[[From A View to A Picture]]&br()[[ImageClient]]&br()[[Sketch+Accessibility]]|
**概観(Overview)
----
NSObjectはObjective-Cクラス階層におけるほとんどのクラスのルートクラスです。NSObjectクラスを通して、オブジェクトはランタイムの基本的インターフェースと、Objective-Cオブジェクトとしての振る舞う能力を継承します。
***セレクタ(Selectors)
NSObjectにはObjective-Cランタイムを活用する為の特別なメソッドがあります。例えば、クラスやインスタンスが特定のメソッドに反応するかを呼び出す前に知ることができます。また、perform...メソッドなどを使って、メソッドの実装を呼び出すことができます。動的バインドを使えないので通常は推奨されませんが、メソッドの実装を関数のように呼び出すこともできます。
これらやこのクラスの他のメソッドはSEL型を引数にとります。効率化の為に、コンパイル後のコードではメソッドを表すのにASCIIのフルネームが使われることはありません。代わりに、コンパイラは、ランタイムではセレクタと呼ばれるユニークな識別記号を使います。メソッドのセレクタは@selector()ディレクティブを使って得ることができます。
|BGCOLOR(#eef):SEL method = @selector(isEqual:);|
instanceMethodForSelector:クラスメソッドとmethodForSelector:インスタンスメソッドはIMP型のメソッドの実装を返します。IMP型はid型を戻り値に持ち、可変数(それに加えてすべてのメソッドに渡される、二つの「暗黙の」引数selfと_cmd)の引数をとる関数ポインタとして定義されています。
|BGCOLOR(#eef):typedef id (*IMP)(id, SEL, ...);|
この定義はこれらのメソッドが返す関数ポインタのプロトタイプとして使用します。これはオブジェクトを引数と戻り値に持つメソッドには十分です。しかし、セレクタがid型以外の引数や戻り値を持つ場合、この型の関数はプロトタイプには適しません。適切なプロトタイプがなければ、コンパイラはfloatをdoubleに、charをintにして扱おうとします。これは実装が予期しないことであり、呼ばれるメソッドは異なった(誤った)働きをするでしょう。
これを回避する為には、独自のプロトタイプを提供する必要があります。以下の例では、test変数の宣言でisEqual:メソッドの実装のプロトタイプを提供しています。test変数はBOOL型を返し、id型(それに加え2つの「暗黙の」引数)を引数に持つ関数ポインタとして定義されています。methodForSelector:メソッドが返す値は同じ型の関数ポインタにキャストされています。
|BGCOLOR(#eef):BOOL (*test)(id, SEL, id);&br()test = (BOOL (*)(id, SEL, id))[target methodForSelector:@selector(isEqual:)];&br()&br()while ( !test(target, @selector(isEqual:), someObject) ) {&br() ...&br()}|
時には、変数宣言とmethodForSelector:が返す関数ポインタをキャストするのに使う(IMPによく似た)型を明確に定義することもできます。以下の例では、EqualIMP型をこの目的で宣言しています。
|BGCOLOR(#eef):typedef BOOL (*EqualIMP)(id, SEL, id);&br()EqualIMP test;&br()test = (EqualIMP)[target methodForSelector:@selector(isEqual:)];&br()&br()while ( !test(target, @selector(isEqual:), someObject) ) {&br() ...&br()}|
どちらの方法でも、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...メソッドは初期化処理を完了するために必ず使用されなければなりません。以下に例を示します。
|BGCOLOR(#eef):TheClass *newObject = [[TheClass alloc] init];|
-サブクラスは初期化コードを含める為にallocメソッドをオーバーライドするべきではありません。代わりに、クラス特有のinit...メソッドを使用するべきです。newメソッドによく似た、生成と初期化を統合したクラスメソッドを作ることもできます。
特に気をつけること
- メモリ管理(ガベージコレクションではない)を使用している場合、このメソッドは保持されたオブジェクトを返します。このオブジェクトはリファレンスカウンタが1で自動解放されません。このメソッドの呼び出し元はreleaseやautoreleaseメソッドを使ってこのオブジェクトを解放する義務があります。
使用可能な環境
- Mac OS X v10.0以降
関連項目
- - init
関係のあるサンプルコード
- [[Cocoa OpenGL]]
- [[CoreRecipes]]
- [[From A View to A Movie]]
- [[FunHouse]]
- [[OpenGL Screensaver]]
宣言しているファイル
-NSObject.h
**インスタンスメソッド
----
// 力尽きました。
// 間違っている所等ありましたら即座に訂正してやってください。
// ちょくちょく追加していけたら良いなあ。なんて。
----
//0.下はいじらない
Tags:&tags()
//1.以下に続けてADCでの分類を書き込みリンクする。「NSHogeのクラスリファレンス」、まで書く
&link_toppage(トップ) > [[リファレンス]] > データ型とコレクション > NSObjectクラスリファレンス
//2.リファレンス日本語名を見出し1で書く。wiki内のリンクで用いられるタイトルになる。翻訳元にもリンクする。
*NSObject クラスリファレンス [[(翻訳元)>http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html]]
//3.翻訳元の最終更新日を書く
このページの最終更新:&date()
ADCの最終更新:2009-08-28
//4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。
//5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck!
//本文開始↓
|BGCOLOR(#eef):継承するクラス |BGCOLOR(#eef):なし(このクラスはルートクラスです)|
|準拠しているプロトコル|[[NSObject>NSObject Protocol Reference]]|
|BGCOLOR(#eef):フレームワーク|BGCOLOR(#eef):/System/Library/Frameworks/[[Foundation.framework]]|
|使用可能な環境|Mac OS X 10.0以降|
|BGCOLOR(#eef):コンパニオンガイド|BGCOLOR(#eef):[[Cocoa Fundamentals Guide]]|
|TOP:宣言ファイル|NSArchiver.h&br()NSClassDescription.h&br()NSKeyedArchiver.h&br()NSObject.h&br()NSObjectScripting.h&br()NSPortCoder.h&br()NSRunLoop.h&br()NSScriptClassDescription.h&br()NSThread.h|
|TOP:BGCOLOR(#eef):サンプルコード|BGCOLOR(#eef):[[CoreRecipes]]&br()[[From A View to A Movie]]&br()[[From A View to A Picture]]&br()[[ImageClient]]&br()[[Sketch+Accessibility]]|
**概観(Overview)
----
NSObjectはObjective-Cクラス階層におけるほとんどのクラスのルートクラスです。NSObjectクラスを通して、オブジェクトはランタイムの基本的インターフェースと、Objective-Cオブジェクトとして振る舞う能力を継承します。
***セレクタ(Selectors)
NSObjectにはObjective-Cランタイムを活用する為の特別なメソッドがあります。例えば、クラスやインスタンスが特定のメソッドに反応するかを呼び出す前に知ることができます。また、perform...メソッドなどを使って、メソッドの実装を呼び出すことができます。動的バインドを使えないので通常は推奨されませんが、メソッドの実装を関数のように呼び出すこともできます。
これらやこのクラスの他のメソッドはSEL型を引数にとります。効率化の為に、コンパイル後のコードではメソッドを表すのにASCIIのフルネームが使われることはありません。代わりに、コンパイラは、ランタイムではセレクタと呼ばれるユニークな識別記号を使います。メソッドのセレクタは@selector()ディレクティブを使って得ることができます。
|BGCOLOR(#eef):SEL method = @selector(isEqual:);|
instanceMethodForSelector:クラスメソッドとmethodForSelector:インスタンスメソッドはIMP型のメソッドの実装を返します。IMP型はid型を戻り値に持ち、可変数(それに加えてすべてのメソッドに渡される、二つの「暗黙の」引数selfと_cmd)の引数をとる関数ポインタとして定義されています。
|BGCOLOR(#eef):typedef id (*IMP)(id, SEL, ...);|
この定義はこれらのメソッドが返す関数ポインタのプロトタイプとして使用します。これはオブジェクトを引数と戻り値に持つメソッドには十分です。しかし、セレクタがid型以外の引数や戻り値を持つ場合、この型の関数はプロトタイプには適しません。適切なプロトタイプがなければ、コンパイラはfloatをdoubleに、charをintにして扱おうとします。これは実装が予期しないことであり、呼ばれるメソッドは異なった(誤った)働きをするでしょう。
これを回避する為には、独自のプロトタイプを提供する必要があります。以下の例では、test変数の宣言でisEqual:メソッドの実装のプロトタイプを提供しています。test変数はBOOL型を返し、id型(それに加え2つの「暗黙の」引数)を引数に持つ関数ポインタとして定義されています。methodForSelector:メソッドが返す値は同じ型の関数ポインタにキャストされています。
|BGCOLOR(#eef):BOOL (*test)(id, SEL, id);&br()test = (BOOL (*)(id, SEL, id))[target methodForSelector:@selector(isEqual:)];&br()&br()while ( !test(target, @selector(isEqual:), someObject) ) {&br() ...&br()}|
時には、変数宣言とmethodForSelector:が返す関数ポインタをキャストするのに使う(IMPによく似た)型を明確に定義することもできます。以下の例では、EqualIMP型をこの目的で宣言しています。
|BGCOLOR(#eef):typedef BOOL (*EqualIMP)(id, SEL, id);&br()EqualIMP test;&br()test = (EqualIMP)[target methodForSelector:@selector(isEqual:)];&br()&br()while ( !test(target, @selector(isEqual:), someObject) ) {&br() ...&br()}|
どちらの方法でも、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...メソッドは初期化処理を完了するために必ず使用されなければなりません。以下に例を示します。
|BGCOLOR(#eef):TheClass *newObject = [[TheClass alloc] init];|
-サブクラスは初期化コードを含める為にallocメソッドをオーバーライドするべきではありません。代わりに、クラス特有のinit...メソッドを使用するべきです。newメソッドによく似た、生成と初期化を統合したクラスメソッドを作ることもできます。
特に気をつけること
- メモリ管理(ガベージコレクションではない)を使用している場合、このメソッドは保持されたオブジェクトを返します。このオブジェクトはリファレンスカウンタが1で自動解放されません。このメソッドの呼び出し元はreleaseやautoreleaseメソッドを使ってこのオブジェクトを解放する義務があります。
使用可能な環境
- Mac OS X v10.0以降
関連項目
- - init
関係のあるサンプルコード
- [[Cocoa OpenGL]]
- [[CoreRecipes]]
- [[From A View to A Movie]]
- [[FunHouse]]
- [[OpenGL Screensaver]]
宣言しているファイル
-NSObject.h
**インスタンスメソッド
----
// 力尽きました。
// 間違っている所等ありましたら即座に訂正してやってください。
// ちょくちょく追加していけたら良いなあ。なんて。
----
表示オプション
横に並べて表示:
変化行の前後のみ表示: