Block链式编程

block开发使用场景(参数使用)


把block当作参数,并不是马上就调用block,什么时候调用,由方法内部决定
什么时候需要把block当作参数去使用:做的事情外界决定,但是什么时候做由内部决定

需求:封装一个计算器,提供一个计算方法,怎么计算由外界决定,什么时候计算由内部决定

block开发中使用场景(返回值)


使用block当作返回值的框架代表:ReactiveCocoaMasonary

链式编程思想:

是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。

  • 链式编程特点:
    方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)

需求:

封装一个计算器,提供一个计算方法,怎么计算由外界决定,什么时候计算由内部决定

#import 

@interface CalculatorManager : NSObject

@property (nonatomic,assign)int result;

//- (instancetype)add:(int)value;

- (CalculatorManager*(^)(int))add;

@end
#import "CalculatorManager.h"

@implementation CalculatorManager

//- (instancetype)add:(int)value{
//    _result +=value;
//    return self;
//}

- (CalculatorManager*(^)(int))add{
    return ^(int value){
        _result +=value;
        return self;
    };
}
@end
#import "ViewController.h"
#import "CalculatorManager.h"

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];

    CalculatorManager*mgr = [[CalculatorManager alloc]init];
    mgr.add(5).add(7);

}
@end

说明:上述实现的说明


    //调用该方法,返回一个块的定义
    mgr.add =   ^(int value){
        _result +=value;
        return self;
    };

    
    void (^block)(int) = ^(int value){
        _result +=value;
        return self;
    };
    //等价
  mgr.add(5) = block(5);

你可能感兴趣的:(Block链式编程)