1 Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做block literal。行为主体可以用return回传值,类型会被compiler自动辨别。如果没有参数列要写成: ^(void)。
int result = ^(int a){return a*a;}(10);
NSLog(@"%d", result);
2 Block Pointer是这样定义的:
//声明一个square的block pointer 其所指向的block有一个int 输入和int 输出
int (^square)(int);
//讲block实体传给squera
square=^(int a){return a*a;};
//调用方法
int result=square(10);
NSLog(@"这时第一个参数%d",result);
3利用block存取变量int A = 8;
int (^myPtr)(int) = ^(int a){ return A + a;};
//block里面可以读取同一类型的A的值
int result = myPtr(3); // result is 11
NSLog(@"result=%d", result);