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;
本文详细介绍了Objective-C中的Block概念,包括Block的定义、实现及调用方式,并通过具体示例展示了如何将Block作为参数传递并执行回调操作。
3万+

被折叠的 条评论
为什么被折叠?



