juanの日記: Obj-C
日記 by
juan
んーと、C++とかだと、クラス fooのオブジェクトを生成するには
foo *hoge = new foo;
とかだけど、Objective-Cでは
foo *hoge = [foo alloc];
みたいに書く。C++だと「新しい fooクラスのオブジェクトを作る」って感じだけど、Obj-Cだと「fooクラスに対して、新しいオブジェクトの生成を命じる」って感じかなあ。
オブジェクトではなくクラスそのものにメッセージを送るっていうのは僕には最初なんだか不思議だった。「クラスはオブジェクトのひな形」って覚えてたから、あくまでなにか動作する実体はオブジェクトであってクラスではないという気持ちがあったわけ。何しろ最初にC++の本を読んだ時は、オブジェクトを生成する度に、メソッドなどのバイナリコードそのものがメモリ上に複製されるような気がしてたもん。「オブジェクト指向って、なんて無駄遣いをするんだ」とか思った事は内緒だ(笑)。
NSString *tmpStr = [NSString stringWithCString:"hogehoge"];
とかを見て、ああ、クラスメソッドってこういうことかと納得。
物を知らないと言う事は、常に新鮮な発見があるということですね(笑)