Objective-C + NSObject

ついさっきまで、なぜ Objective-C では、NSObject や Object を 常に継承しなければいけないのかナーと思っていた。

が、どうやら言語の仕様上の問題のようだ。

すべてのクラスは、ルートクラス(すなわちNSObjectやObject)を継承しなければ、 オブジェクトとして振る舞うことが出来ない。 (参照:詳解 Objective-C 2.0)

なるほどねー。納得しました。

Objective-C は、かなり動的なことが出来るようで、以下の様なことも出来てしまう。 (先日作成したクラスを流用)

id foo =[Hoge class];
id var =[[foo alloc] init_x:10 _y:20];
printf("x:%d\n",[var getX]);
printf("y:%d\n",[var getY]);
return0;

C++よりも柔軟性が高いのはたしかだなー。