创建一个 Block
void (^aBlock)(void) = ^{
NSLog(@"This is a block");
};
这个 block 没有参数和返回值。
调用一个 Block
aBlock(); //This is a block
带参数和返回值的 Blocks
Block 可以带参数和返回值,就像函数和方法一样。
double (^multiplyTwoValues)(double, double) = ^(double firstValue, double secondValue) {
return firstValue * secondValue;
};
//返回值被推断从 block 内部,也可以明确指定。
multiplyTwoValues = ^ double (double firstValue, double secondValue) {
return firstValue * secondValue;
};
double result = multiplyTwoValues(2, 3); //result = 6
使用类型定义 Blocks
如果需要定义多个相同类型的 block 变量,建议使用。
//不使用类型定义
void (^firstBlock)(void) = ^{
NSLog(@"This is firstBlock");
};
void (^secondBlock)(void) = ^{
NSLog(@"This is secondBlock");
};
//使用类型定义
typedef void (^SimpleBlock)(void);
SimpleBlock firstBlock = ^{
NSLog(@"This is firstBlock");
};
SimpleBlock secondBlock = ^{
NSLog(@"This is secondBlock");
};
在嵌套 block 时使用,可读性更高。
//不使用类型定义
void (^(^nestBlock)(void (^)(void))(void) = ^(void (^aBlock)(void)) {
return aBlock;
};
//使用类型定义
SimpleBlock (^nestBlock)(SimpleBlock) = ^(SimpleBlock aBlock) {
return aBlock;
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。