• IOS ReactiveCocoa


     一 前提:  

        在iOS开发过程中,当某些事件响应时,需处理的某些业务逻辑

          Eg. 按钮点击:action

            ScrollView滚动:delegate

            属性值改变:KVO

      ReactiveCocoa为事件提供了很多的处理方法,而且利用RAC处理事件很方便,可以把要处理的事件和监听代码放在一起,这样便于管理,不需要跳到对应的方法中,非常符合高聚合,低耦合的思想

     二 ReactiveCocoa整体结构介绍:

        1 信号源(事件流)RACStream

        2 订阅者 RACSubscriber:在使用-subscriberNext:^(id x){}的方法订阅信号源进行处理后会生成一个清洁工RACDisposable,然后手动调用-dispose方法来进行清理工作

        3 调度器 RACScheduler

        4 清洁工 RACDisposable:他封装了取消和清理一次订阅所必须的工作,有一个核心的方法:-dispose,调用这个方法就会执行相应的清理工作,类似于NSObject的-dealloc方法

     三  ReactiveCocoa响应式编程框架:

        ReactiveCocoa中常用的是RACSignal,RACSignal继承自RACStream,Stream,即事件流,事件流是一个按时间排序的Events序列  

       四  主要内容:

        1 RACSignal:RAC中最核心的类

          信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出信号。这个类本身不具有发送信号的能力,而是交给内部的一个订阅者去做

          默认的信号都是冷信号,也就是值改变了也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变后才会触发,可以通过RACSignal的subscriberNext的方法进行订阅

        2 RACSubscriber:

          订阅者,用于发送信号,这是一个协议,不是一个类,只有遵守这个协议,并且实现方法才能成为一个订阅者,通过creat创建的信号,都有一个订阅者帮他发送数据

        3 RACDisposable:

          用于取消订阅或清理资源,不想监听某个信号时,可以通过她主动地取消订阅信号

        4 RACSubject:

          信号提供者,自己可以充当信号,又能发送信号,通常用来代替代理

        5 RACTuple:

          元组类,类似于NSArray,用来包装值

        6 RACCommand:

          RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,可以很方便的监控事件的执行过程,用于监听网络请求,按钮点击

        7 RACSequence:

          RAC中的集合类,用于代替NSArray,可以用来快速的遍历数组和字典

        8 RACMulticastConnection:

          用于当一个信号,被多次订阅时,为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以被这个类处理

        9 RACScheduler:

          RAC中的队列,用GCD封装

        10 RACUnit:

          表示Stream不包含有意义的值,可以直接理解为nil

        11 RACEvent:

          把数据包装成信号事件(signal envent)

       五 ReactiveCocoa开发的常见用法:

         1 代替代理: rac_signalForSelector

         2 代替KVO,监听某个对象属性改变:rac_valueAndChangesForKeyPath

         3 监听事件:rac_signalForControlEvents

         4 代替通知:rac_addObserveForName

         5 监听文本框文字改变(只要文本框改变就会发出信号):rac_textSignal

         6 处理当界面有多次请求时,需要都获取到数据时,才能显示界面:rac_liftSelector:withSignalFormArray:Sihanls: 当传入的signals(信号数组),每一个signal都至少sendNext一次,就会去触发第一个selector参数的方法

      六 参考链接:

        iOS ReactiveCocoa使用浅析:http://www.jianshu.com/p/25922584bc43

        最快让你上手ReactiveCocoa之基础篇:http://www.jianshu.com/p/87ef6720a096

  • 相关阅读:
    Beyond Compare3 注册密钥和添加到右键菜单
    DLL文件无法删除怎么解决
    英语单词学习方法
    JSP+Servlet+JavaBean
    把Java程序打包成jar文件包并执行
    把java文件打包成.jar (jar命令详解)
    Java程序打包成jar包
    JDK
    使用JDK开发Servlet程序
    Jdk和Jre目录和三个lib目录说明----外部扩展jar包servlet,mysql,oracle等
  • 原文地址:https://www.cnblogs.com/roxy/p/5967206.html
Copyright © 2020-2023  润新知