おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

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++よりはとっつきやすそうです。もっといろいろ勉強してみよう。