block blockはコード中のブロックのこと. caretと呼ばれる”^”から始まる. 関数外のローカル変数を使えるがread only. が,ローカル変数を __blockをつけて宣言していれば,書き換えることも可能. e.g. __block BOOL something = NO; こうするとブロック内でYESに書き換えられる. typedefすると便利. double型の引数を1つとり,返り値がdoubleであるブロックオブジェクトの型に unary_opeartion_tをつけるには次のようにする. typedef double (^unary_opeartion_t)(double op); そうすると, unary_operation_t square; square = ^(double operand) { return operand * opera