响应式编程

2017-05-03  本文已影响20人  西门丨不吹雪

在网上流传一个非常经典的解释<响应式编程的概念>
在程序开发中:
a = b + c
赋值之后 b 或者 c 的值变化后,a 的值不会跟着变化
响应式编程,目标就是,如果 b 或者 c 的数值发生变化,a 的数值会同时发生变化

下面这个例子也是一样,当点击屏幕时,age+1,当age发生改变时就将对应值打印出来
此处用到的KVO,监听age,一旦改变就处理你需要做的事情

- (void)viewDidLoad {
   [super viewDidLoad];
    _person = [[Person alloc]init];

    //_person添加观察者
   [_person addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:nil];
}

// 监听的属性只要一改变就调用
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    NSLog(@"%ld",_person.age);
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    _person.age ++;
}

KVO底层实现:

上一篇下一篇

猜你喜欢

热点阅读