Objective-C

また ObjC いいなと思えてきた。 Binary 2.0 は死んだらしいし。というかまた C に飽きてきた。

  • 機能つぎはぎでゲームオブジェクトを作りたいことはよくあるので、 Category とか Protocol とかがゲームとかに向いてそう。(プレイヤーの攻撃を受ける、丸い形状の、画面から出たら消える、プレイヤーに触れたらプレイヤーが死ぬ、とかそういう組み合わせでごにょごにょ)
  • リフレクション強い。たぶんシリアライザとかすぐ作れる。
  • 関数の静的バインディング欲しかったっけ。
  • 最近 GC 欲しい気分。
  • C の遺産使える。
  • C++ の遺産もたぶん使える。
  • ランタイム小さいから Win バイナリ配りやすい。 GNUStep 入れると巨大だけど。
  • 他言語ではわりと特殊な扱いになりがちな OSX でも本場だからたぶん安心。
  • 他 Un*x でも apt-get install gcc-objc してちょ、で終わり。

とりあえずメソッドの列挙。全然 Objective-C じゃないけど。

#include <stdio.h>
#include <stdlib.h>

#include <objc/objc-api.h>

int main() {
    Class cl;
    void* es = NULL;
    while ((cl = objc_next_class(&es))) {
        MethodList* ml;
        for (ml = cl->methods; ml; ml = ml->method_next) {
            int i;
            for (i = 0; i < ml->method_count; ++i) {
                Method* m = &ml->method_list[i];
                if (m->method_name) {
                    printf("%s.%s\n", cl->name, sel_get_name(m->method_name));
                }
            }
        }
    }

    return 0;
}

あと GNUStep 入れて気付いたんだけど libffi に似た ffcall ってのがあるみたい。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h