1 // block语法(可定义在任意位置)
2 //1.定义
3 int (^Sum)(int, int) = ^(int a, int b){return a+b;};
4
5 //2.使用
6 NSLog(@"sum = %d", Sum(10, 20));
7
8 //3.将block定义成类型
9 typedef int(^myBlock)(int, int);
10 //4.定义block类型的变量
11 myBlock sub = ^(int a, int b){return a-b;};
12 myBlock mul = ^(int a, int b){return a*b;};
13
14 NSLog(@"sub=%d", sub(10, 20));
15 NSLog(@"mul = %d", mul(10, 20));
16
17 //5.block和局部变量的关系
18 //5.1 在block中可以访问局部变量
19 int a = 20;
20 int b = 10;
21 void(^myBlock2)() = ^(){
22 NSLog(@"a+b = %d", a+b);
23 };
24 myBlock2();
25 //5.2 在block中不能修改局部变量的值
26 void (^myBlock3)() = ^(){
27 //a = 30; //error:普通变量不能修改
28 };
29 //5.3 在block中可以修改用__block修饰的变量的值
30 __block int c = 30;
31 void (^myBlock4)() = ^(){
32 c = 40;
33 NSLog(@"c = %d", c);
34 };
35 myBlock4();