1、定义
//无返回值 一个参数(整形): void (^name) (int); //无返回值 两个参数(整形,字符串): void (^name) (int , char *); //有返回值 两个参数 int (^name) (char , int);
2、实现
要实现block的具体函数
例如:
void (^name) (int) = ^(int sum) { NSLog(@"sum = %d",sum); };
或者:
//无返回值 void (^name) (int); name = ^(int sum) { NSLog(@"sum = %d",sum); };
//有返回值 int (^name) (int,int); name = ^(int one , int two) { return one * two; };
3、调用
//无返回值 name(100); //有返回值的调用 int sum = name(12,37);
作为Block,他的主要作用就是回调。也就是把block,当成一个参数,进行传递。
1、方法定义
//传入一个值,判断这个值的大小,如果符合条件,就调用block块 -(void)calculate:(int) count withComplete:(int (^)(int sum)) result;
2、方法实现
//如果count > 10 ,就调用一个带返回值、带参数的Blcok块 -(void)calculate:(int)count withComplete:(int (^)(int sum))result { if (count > 10) { int newValue = result(10*9); NSLog(@"newValue = %d",newValue); } else { NSLog(@"小于10"); } }
3、方法的实现
[bo calculate:11 withComplete:^(int sum) { NSLog(@"计算后的值 = %d",sum); return sum-100; }];
以上的写法中,withComplete中block可读性不高。可以把block单独定义。
例如:
1、定义block
typedef int (^result)(int sum);
2、定义方法
-(void)calculate:(int) count withComplete:(result) sum;