先了解定义C语言的函数指针!函数
1 int sum (int x, int y) { 2 return x+ y; 3 } 4 // 定义函数 5 int (*p)(int, int) = sum; 6 NSLog(@"%ld", p(2, 5)); 7 8 // 函数指针类型: int (*)(int, int); 9 // 函数指针变量: p; 10 // 函数指针的值: sum
看看block语法学习
1 block类型: int(^)(int, int) 2 block变量: block 3 block值: ^(int x, int y){ 4 return x + y ; 5 };
定义block语法块spa
1 int (^block) (int , int) = ^(int x, int y) { 2 return x + y; 3 } 4 NSLog(@"%d", block(3, 5));
效果和上边的函数指针同样! 参照起来学习方便!指针
无返回值, 无参数 block 语法code
1 void(^block1)(void) = ^(void) { 2 NSLog(@"无返回值, 无参数"); 3 } 4 // 调用block1 5 block1();
1 int(^block2)(void) = ^(void) { 2 return 1; 3 } 4 NSLog(@"有返回值, 无参数%d", block2());
1 void (^block3)(int, int) = ^(int x, int y){ 2 NSLog(@"%d + %d = %d", x, y, x +y); 3 }; 4 调用 5 block3(3, 5);
1 int (^block4)(int , int) = ^(int x, int y) { 2 return x + y; 3 } 4 block 调用 5 NSLog(@"%d", block4(3, 5));
1 int temp = 100; 2 void (^block1)(void) = ^(void) { 3 NSLog(@"%d", temp++); 4 NSLog(@"%d", temp + 1); 5 }
调用 block1();
1 __block int temp2 = 200; 用__block修饰一下变量, 便在block能够使用了 2 __block int temp2 = 200; 3 void (^block9) (void) = ^(void){ 4 temp2++; // 这样就能够修改了! 5 }; 6 调用 block9(); 7 结果 201;
1 在main函数外定义一个在main函数外定义一个temp3 = 300; 2 void (^block11) (void) = ^(void){ 3 temp3++; 4 NSLog(@"temp3 = %d", temp3 + 1); 5 }; 6 调用 block11(); 7 结果 temp3 = 301;