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