Objective-C

Objective-C
http://wisdom.sakura.ne.jp/programming/objc/index.html
をみながら勉強したよ。
C言語コンパイラディレクティブだけで拡張したのに C++ みたいなオブジェクト指向プログラムができるのは画期的だった。その技術はすごいと思う。だけれども、

[[MyClass new] print];

みたいに括弧の入れ子はちょっと腹立たしい。

#import <Foundation/NSObject.h>
#import <stdio.h>
@interface MyClass: NSObject
{
  int status;
}
  -(void)hello;
  -(void)getStatus;
@end

@implementation MyClass
  -(id)init {
    printf("now try to initialize\n");
    status = 0;
  }
  -(void)hello {
    printf("hello world\n");
    status = 1;
  }
  -(void)getStatus {
    printf("Now I'm in %d\n", status);
  }
@end

int main( void ) {
  id obj = [MyClass alloc];
  [obj getStatus];
  [[obj init] hello];
  [obj getStatus];
  [[MyClass new] hello];
  return 0;
}

みたいな。あとは、

gcc -framework Foundation hello.m

で、コンパイルできちゃうの。それはそれですごい。すべては Foundation/NSObject.h なんだもんな。プロトコルがいまいちわからん。