加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ReactiveCocoa

发布时间:2020-12-15 05:12:26 所属栏目:百科 来源:网络整理
导读:函数式编程 + 响应式编程 = 函数响应式编程 ReactiveCocoa 主要解决了一下的问题: 1 、 UI 数据绑定 UI 控件通常需要绑定一个事件, RAC 可以方便的绑定任何数据流到控件上。 2 、用户交互事件绑定 RAC 为可交互的 UI 控件提供一系列能够发送 Signal 信号的

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读