動的型付け
コンパイル時にチェックされていないので、オブジェクトの型が指す変数は動的型付けされます。Objective-C は、オブジェクトの種類を指定せずにオブジェクトである変数を表すために id のデータ型を使用します。これが、動的型付け と呼ばれます。
動的型付けは、コンパイル時にオブジェクトが属するクラスを明示的に識別する静的型付けとは対照的です。コンパイル時に静的に型チェックする事は、より厳格なデータの整合性を保証しますが、その完全性と引き換えに、動的型付けはプログラムに、はるかに大きな柔軟性を提供します。またオブジェクトの内察を通して(たとえば、動的に型付けされた、匿名オブジェクトに、そのクラスが何であるか求める)、実行時にオブジェクトの型を確認するため、特定の操作のための適合性を検証することができます。
以下の例では、オブジェクトの異種コレクションを使用しての動的型付けを示しています。
NSArray *anArray = [NSArray arrayWithObjects:@"A string", [NSDecimalNumber zero], [NSDate date], nil]; NSInteger index; for (index = 0; index < 3; index++) { id anObject = [anArray objectAtIndex:index]; NSLog(@"Object at index %d is %@", index, [anObject description]); }
オブジェクトは、それに送信するどんなメッセージにも応答できるようにする必要があり、実行時に変数によって指されます。そうでなければ、プログラムは例外を引き起こします。呼び出されたメソッドの実際の実装は、動的バインディングを使用して決定されます。
isa ポインタ
すべてのオブジェクトは、オブジェクトのクラスを特定する isa インスタンス変数を持っています。実行環境は、必要があるときに、オブジェクトの実際のクラスを決定するために、このポインタを使用します。
前提条件の記事
(なし)
関連記事
既出の議論
オブジェクトでの作業
次の章
前の章