block传值

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;
}];

你可能感兴趣的:(block传值)