photo駅のホームで感じる違和感。
あれ?照明が青い…?

とうとう中央線でも導入が始まった青色照明。主に防犯&自殺抑止効果を狙っての事だそうですが、その色のせいなのか、場所のせいなのか(ホーム端)。その場が微妙に場末のキャバレー的雰囲気を醸し出しとって、ちょっと逃げ出したい感じ。

イギリスや関西の実証結果で明らかな効果があったようですし、一人でも思いとどまってくれるのならこの微妙な雰囲気も我慢できるというものです(部長はホーム端付近で電車を待つのがクセなのだ)

特に中央線!

そんな前置きとはまるでカンケーのないプログラムのお話ですが、さいきんの部長のブームは関数テーブルとコールバック。

- (void)hogeFunc
{
}

- (void)hogehogeFunc
{
}

- (void)fugaFunc
{
}

などとメソッドがあるバヤイ、


SEL func_tbl[] = {
    @selector(hogeFunc),
    @selector(hogehogeFunc),
    @selector(fugaFunc),
};

int i;
[self performSelector:func_tbl[i]];

と書けば、func_tbl[]に宣言されたメソッドの3番目を実行とかいう事が可能になります。
たとえば、テーブルで選ばれたインデックスで実行内容を決めたい場合なんかに効果を発揮するんじゃないかな。誰ですか?switch文で分岐しとる人は!

引数を1つ渡す場合は

- (void)fugaFunc:(id)aObj
{
}

とメソッドを書いて、

SEL func_tbl[] = {
    @selector(hogeFunc:),
};
id obj;
[self performSelector:func_tbl[i] withObject:obj];

とします。引数は2つまで許されているので詳しくはXcodeのヘルプを見て下さい。

これを応用すれば、他のクラスから自分のクラスのメソッドをコールバック的に呼び出したり、いろいろ楽できるかと思います。部長は自前で設計したタスク処理で使ってるのだ。

もうちょっと研究を続けます。