Objective-Cを使ってみる
ひょんなことからObjective-Cの勉強をちょっとしてみた。
最初はMacがないと使えないと思っていたのだけど、gccでコンパイルできることがわかった。すばらしい。
sudo aptitude install gobjc
環境構築はこれでOK。あとはgccかけるときに-lobjcをつけてあげます。
gcc test.m -lobjc
こんな感じ。Objective-Cのファイル名の拡張子はmだそうです。
Objective-Cは基本的にC言語みたいです。変な記法でオブジェクトが使えるようになったC言語。
たとえばRubyで
class Tsukasa < Oishi
def say
puts "hello, world!"
end
end
a = Tsukasa.net
a.say
というようなコードがあったとき、Objective-Cでは
#import <stdio.h>
#import <objc/Object.h>
@interface Tsukasa : Oishi
- (void)say;
@end
@implementation Tsukasa
- (void)say {
printf("hello, world!\n");
}
@end
int main(void) {
id a = [Tsukasa new];
[a say];
}
と書きます。同じクラスを2回書いているように見えますが、@interfaceのところはクラスの宣言で、@implementationでメソッドを実際に定義します。メソッド名の前のカッコは返り値で、その前の「-(マイナス)」はインスタンスメソッドであることを示しています。クラスメソッドのときは「+(プラス)」を使います。
実際にメソッドを呼び出すとははかぎ括弧で指定します。最初にレシーバを書いて、次にメソッドと引数が続きます。
idというのはインスタンスを表しているObjective-Cの型で、基本的にはvoid*みたいなものだそう。だから、
Tsukasa * a = [Tsukasa new];
と書いてもOKなのです。
書き方がちょっと変だけど、C++よりはとっつきやすそうです。もっといろいろ勉強してみよう。