1.block作属性
发送者
@property (nonatomic,copy) void (^changeBgColor)(UIColor *color);
if (_changeBgColor) { // 代码块属性不为空
_changeBgColor(color);
}
接收者
// 下列第一句是弱化操作,防止在文件中循环引用:
__weak typeof(self) weakSelf = self;
[testVC setChangeBgColor:^(UIColor *color) {
weakSelf.view.backgroundColor = color;
}];
2.block作参数
//方法中定义了一个block数据类型参数(返回值为int类型的,且带有一个int类型的形参)
-(void)calculate:(int (^)(int))calculateBlock
{
//calculateBlock接受外界传入的代码块,也就意味着怎么去操作是由外界调用者决定的
_result = calculateBlock(_result);//将_result的值作为实参传入
}
[manager calculate:^int(int i) {
//参数i自加1,然后返回
i++;
return i;
}];