Blocks-基础
1. Block 语法
^ 返回值类型 参数列表 表达式
如: ^ int (int count) {return count + 1}
返回值类型可以省略。
如: ^ (int count) {return count + 1}
如果参数列表为空,参数列表也可以省略。
如: ^ {printf("Blocks\n");}
2. Block类型变量:
类似于函数指针定义方式:
int (^blk) (int) = ^ (int count) {return count + 1};
相同类型的Block变量可相互赋值。
函数形式参数可以使用Block变量。
可以讲Block变量作为函数返回值。
3. 截取自动变量及__block说明符
自动变量的截取只能保存执行Block语法瞬间的值。保存后不能改写。
{ __block int val = 0; void (^blk) (void) = ^ { val = 1; }; bulk(); printf("val = %d", val); } // 输出:val = 1
4. 并没有实现对C语言数组的截取
{ const char test[] = "hello"; // Error, 可以使用指针代替 void (^blk) (void) = ^ { printf("%c\n", text[2]); }; }