block をローカル変数として定義する方法のメモです。
(iOS 5で試しました。)
block は、Target-Action, Delegate, Notification などと同じCallback 処理の一つです。 簡単に実装が可能です、一回だけ Callback を仕掛けたいときなどにどうぞ。
・UIView animationWithDuration
・NSArray enumerateObjectsAtIndexes:options:usingBlock:
などでも使われています。
ブロックの宣言において、通常の変数と違うところは、
1. 変数名の書き方 — > (^変数名)
2. 引数を付ける —> (^変数名)(引数…)
でしょうか。
これを使って、
足し算をする block を書いてみようと思います。
サンプルコードはこんな感じです。
(ViewController.mの中に実装した例です。Single View Application などでプロジェクトを作れば簡単に試せます。)
– (void)viewDidLoad
{
[superviewDidLoad];
// 引数に int型を二つもつ block を定義
int (^calculator)(int, int);
// block の中身を代入 引数を加算
calculator = ^int(int a, int b) {
return a + b;
};
// 実行してみる –> ログには 6 と出力される
NSLog(@”%d”, calculator(2, 4));
}