Block封装了一段代码,可以在任何时候执行 Block的标志: ^ block跟函数很像: 1.可以保存代码 2.有返回值 3.有形参 int main() { //定义block变量,没有返回值,没有形参 //block没有形参时可省略后面的() void (^myblock)() = ^(){ NSLog(@“—————”); NSLog(@“—————”); }; int (^sumblock)(int, int) = ^(int a, int b){ return a + b; }; int c = sumblock(10,11); NSLog(@“%d”, c); //利用typedef定义block类型 //typedef int (^MyBlock)(int, int ) //可以用MyBlock定义block变量 ///MyBlock sumBlock; //sumBlock = ^(int a, int b) { // return a + b; // }; //int c = sumBlock(10,11); //用Block输出n条横线 void (^lineBlock)(int) = ^(int n) { for (int i = 0; i<n; i++){ NSLog(@“——————”); } }; lineBlock(5); int x = 10; __block int y = 20; void (^block)(); block = ^{ //block内部可以访问外部的变量 //NSLog(@“x=%d”, x); //默认情况下,block内部不能修改外面的局部变量 x = 20; //给局部变量加上__block关键字,这个局部变量就可以在block内不修改 y = 25; }; block(); return 0; }
|