2
A
回答
7
德米特里的答案是完全正确的。块语法当成一个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;
};
。希望帮助:)
2
只是阻止语法
void (^someBlock)(void) = ^{
//some code
};
+0
给你一个答案upvote,但我觉得像其他人可能会帮助,如果它的顶部。谢谢德米特里 – 2013-04-23 09:11:25
相关问题
- 1. 实例化实例变量为块
- 2. ARC分配实例变量init或awakeFromNib
- 3. ARC不会发布实例变量
- 4. Ruby:实例化块中的新变量
- 5. 如何将我的AppDelegate定义为它实例化的类的实例变量?
- 6. 在RSpec中,如何将实例变量传递给示例块?
- 7. 如何使用实例化变量隐藏接口变量
- 8. 使用实例变量
- 9. 使用实例变量&self.variable
- 10. JavaScript:如何使用实例变量
- 11. 实例变量
- 12. 实例变量
- 13. 实例变量
- 14. 如何使用Edge.js模块创建和重用实例变量?
- 15. 如何将本地变量更改为实例变量?
- 16. 实例变量,受另一个实例
- 17. 将实例变量转换为String?
- 18. 初始化实例化变量
- 19. 如何使用实例索引的模块实例?
- 20. 在Ruby中实例化一个类并填充实例变量
- 21. 在实例变量上实际使用延迟初始化
- 22. iOS实例变量
- 23. querydsl实例变量
- 24. 如何从父实例实例化子实例
- 25. 如何使用ReflectiveInjector实例化一个Http实例?
- 26. 保存实例变量中的块
- 27. 访问模块实例变量
- 28. 的iOS:在块实例变量
- 29. 更改块中的实例变量
- 30. Obj-C块实例化
非常棒的答案约翰内斯,谢谢你的概念性演练 – 2013-04-23 09:10:50
高兴地帮助:)我花了我一段时间围绕块语法绕我的头:) – 2013-04-23 09:15:25