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;