ReactiveCocoa

来源:互联网 发布:json接口api 编辑:程序博客网 时间:2024/06/05 07:14

函数式编程 + 响应式编程 =函数响应式编程

ReactiveCocoa 主要解决了一下的问题:

     1UI数据绑定

        UI 控件通常需要绑定一个事件,RAC可以方便的绑定任何数据流到控件上。

     2、用户交互事件绑定

        RAC 为可交互的 UI控件提供一系列能够发送 Signal信号的方法,这些数据流会在用户交互中相互传递。

     3、解决状态以及状态之间依赖过多的问题

        有了RAC绑定,可以不用关心各种复杂的状态,isSelected ,isFinished等,也解决了这些状态在后期维护艰难的问题。

     4、消息传递机制的统一

        OC  中的消息传递的方式通常有:

        Delegate 

        通知(NotificationCenter) 

        Block CallBack

        Target-Action

        KVO

开发中常用笔记:

1、代替代理:    对应方法:rac_signalForSelector        需求:自定义View,监听View中按钮点击        之前都是需要通过代理监听,点击按钮的时候,通知代理做事情        rac_signalForSelector:把调用某个对象的方法的信息转换成信号,只要调用这个方法,就会发送信号。        这里表示只要View调用clickViewButton,就会发出信号,订阅就好了。        [[self.View rac_signalForSelector:@selector(clickViewButton)] subscribeNext:^(id x) {        NSLog(@"点击了视图上的按扭");     }];
 2、代替 KVO:(监听某个对象的属性改变)     对应方法:rac_valuesAndChangesForKeyPath         [[self.View rac_valuesAndChangesForKeyPath:@"frame" options:NSKeyValueObservingOptionNew observer:nil] subscribeNext:^(id x) {     NSLog(@"%@",x);     }];

 3、监听事件:     对应方法:rac_signalForControlEvents     把按钮点击事件转换为信号,点击按钮,就会发送信号          [[self.button rac_signalForControlEvents:UIControlEventTouchUpInside ] subscribeNext:^(id x) {     NSLog(@"点击了按扭");     }];
4、代替通知:(监听某个通知)     对应方法:rac_addObserverForName          [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillChangeFrameNotification object:nil] subscribeNext:^(id x) {     NSLog(@"键盘frame发生改变%@",x);     }];
 5、监听文本框文字改变:     对应方法:rac_textSignal(只要文本框发出改变就会发出这个信号)         [self.textfield.rac_textSignal subscribeNext:^(id x) {     NSLog(@"%@",x);     }];















0 0