这是来自于Clang 9文档中有关Blocks的语言规范,它是一个块字面表达式,形式如下(源自维基百科):
^return_type ( parameters ) { function_body }
但是:
如果省略了返回类型并且参数列表为 ( void ),那么 ( void ) 参数列表也可以被省略。
下面是:
^{ int y = x; }();
等于:
( ^void (void) { int y = x; } )();
等于:
void (^f)(void) = ^void (void) { int y = x; };
f();
int y = x
,并在声明后立即执行它。