Block構文内で自動変数に対して代入をするとエラーになります。 エラーにならないようにするには、__block指定子を使います。 まず、Blockの外側にある変数を使用しているサンプルです。 -(void)blockSample1 { int x = 1; int y = 2; int (^block)(int, int) = ^(int a, int b){ return x * y * a * b; }; int ret = block(3, 4); NSLog(@"ret = %d", ret); } 次に、Block構文内でxへの代入をしようとしてみます。 -(void)blockSample2 { int x = 1; int y = 2; int (^block)(int, int) = ^(int a, int b){ x = 2; // error return x *