做这样的事情要做什么?
void (^)(void) *someBlock = ^{
//some code
};
德米特里的回答完全正确。将块语法视为 C 函数声明:
// C function -> <return type> <function name> (<arguments>)
void someFunction(void)
{
// do something
}
// block -> <return type> (^<block variable name>) (<arguments>)
void (^someBlock)(void) = ^{
// do something
};
另一个例子:
// C function
int sum (int a, int b)
{
return a + b;
}
// block
int (^sum)(int, int) = ^(int a, int b) {
return a + b;
};
因此,只需将块语法视为 C 函数声明:首先是返回类型int
,然后是块变量的名称,(^sum)
然后是参数类型列表(int, int)
。
但是,如果您的应用程序中经常需要某种类型的块,请使用 typedef:
typedef int (^MySumBlock)(int, int);
现在您可以创建以下MySumBlock
类型的变量:
MySumBlock debugSumBlock = ^(int a, int b) {
NSLog(@"Adding %i and %i", a, b);
return a + b;
};
MySumBlock normalSumBlock = ^(int a, int b) {
return a + b;
};
希望有帮助:)
只是块语法
void (^someBlock)(void) = ^{
//some code
};