本帖最后由 王振宇351x 于 2014-8-22 11:56 编辑
之前一直弄不懂block的使用,今天终于探索了下,得到了一些结论:block的声明:
int (^myblock)(); // 没有参数. int (^myblock1)(int); // 有形参. 定义: int(^myblock)()=^(){ printf("hehe\n"); return 1; }; int(^myblock1)(int)=^(int a){
printf("hehe%d\n",a); return 1; }; 调用 int main(){ myblock(); myblock1(5); return 0; } block也可以作为参数,传给其他函数,如下: // 这也是我之前添加动画的时候,一直搞不懂的. void test(void(^block)()){ printf("hehe1\n"); block(); printf("hehe2\n"); } int main(){ test(^(){ printf("hehe3\n"); }); return 0; } 结果是 hehe1 hehe3 hehe2 Program ended with exit code: 0 这个时候,下面的蓝色部分,整个代码块作为test函数的参数.所以,输出的顺序,就可以理解了. int main(){ test(^(){ printf("hehe3\n"); }); return 0; } 另外,如下代码,也是可以的,输出的结果,和上面一样:
void test(void(^block)()){ printf("hehe1\n"); block(); printf("hehe2\n"); } int main(){ void (^myblock)() = ^(){ printf("hehe3\n"); }; test(myblock); return 0; }
|