如何使用ARC将块实例化为实例变量?
答
德米特里的答案是完全正确的。块语法当成一个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
};
+0
给你一个答案upvote,但我觉得像其他人可能会帮助,如果它的顶部。谢谢德米特里 – 2013-04-23 09:11:25
非常棒的答案约翰内斯,谢谢你的概念性演练 – 2013-04-23 09:10:50
高兴地帮助:)我花了我一段时间围绕块语法绕我的头:) – 2013-04-23 09:15:25