先了解定義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;