如何做出类似这样的工作?
void (^)(void) *someBlock = ^{
//some code
};
答案 0 :(得分:7)
// 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;
};
希望有所帮助:)
答案 1 :(得分:2)
只是阻止语法
void (^someBlock)(void) = ^{
//some code
};