RAC 代替代理、KVO、通知、事件

代替代理

首先在创建一个View命名为BlueView,里面放一个Btn,Btn里面关联一个点击事件btnClick;

现在通过RAC 的方式,代替代理的方式,在控制器里面监控Btn的点击事件;实现如下

[[_blueView rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(RACTuple * _Nullable x) {

        NSLog(@"%@",x);

    }];

代替KVO

//代替KVO 监听回调在一起

    [_blueView rac_observeKeyPath:@"frame" options:NSKeyValueObservingOptionOld  | NSKeyValueObservingOptionNew observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) {

        //回调 value:立刻马上改变的值 change :根据options 对应相应的新旧值

        NSLog(@"value%@---%@",value,change);

    }];

//更方便的方式

    [[_blueView rac_valuesForKeyPath:@"frame" observer:nil] subscribeNext:^(id  _Nullable x) {

        //X 修改了

        NSLog(@"%@",x);

    }];

代替事件监听

//监听事件

    [[_btn rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(__kindof UIControl * _Nullable x) {

        NSLog(@"%@",x);//x:信号发送者  按钮本身

    }];

代替通知

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardDidShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {

        NSLog(@"监听系统键盘弹出通知:%@",x);

    }];

监听文本框

//监听文本框

    [[_field rac_textSignal] subscribeNext:^(NSString * _Nullable x) {

        NSLog(@"监听文本框:%@",x);

    }];

你可能感兴趣的:(RAC 代替代理、KVO、通知、事件)