ReactiveCocoa 优秀博客阅读笔记

作者: wg689 | 来源:发表于2016-07-09 16:05 被阅读565次

**推荐:ReactiveCocoa和MVVM专题,汇聚一些优秀相关博客 **

为梦想每天前行(与本文无关)

ReactiveCocoa为事件定义了一个标准接口,从而可以使用一些基本工具来更容易的连接、过滤和组合。如果你对上面说的还比较疑惑,那还是继续往下看吧。

一 )函数响应式编程名称的由来

ReactiveCocoa结合了几种编程风格:

  • 函数式编程(Functional Programming):使用高阶函数,例如函数用其他函数作为参数.
  • 响应式编程(Reactive Programming):关注于数据流和变化传播。

所以,你可能听说过ReactiveCocoa被描述为函数响应式编程(FRP)框架。

二 )ReactiveCocoa作用

在我们iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用不同的方式来处理。比如按钮的点击使用action,ScrollView滚动使用delegate,属性值改变使用KVO等系统提供的方式。其实这些事件,都可以通过RAC处理ReactiveCocoa为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情,和监听的事情的代码放在一起,这样非常方便我们管理,就不需要跳到对应的方法里非常符合我们开发中高聚合,低耦合的思想

三) 信号的逻辑图

FRP_ReactiveCocoa_large.png

核心概念是RACSignal,相当于一个信号管道,接收信号源的信号,将信号依次发送给

四 ) RAC 和MVVM 结合使用图

MVVMReactiveCocoa.png

五 RAC 简单实用二十例

ReactiveCocoa简单使用20例 超级值得一看和尝试

六 ) ReactiveCocoa常见类。

学习框架首要之处:个人认为先要搞清楚框架中常用的类,在RAC中最核心的类RACSiganl,搞定这个类就能ReactiveCocoa开发了。

6.1RACSiganl

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

默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发
如何订阅信号:调用信号RACSignal的subscribeNext就能订阅。

6.2RACSubscriber

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

6.3RACDisposable

用于取消订阅或者清理资源,当信号发送完成或者发送错误的时候,就会自动触发它。
使用场景
:不想监听某个信号时,可以通过它主动取消订阅信号。

6.4RACSubject

:RACSubject:信号提供者,自己可以充当信号,又能发送信号。

6.6RACTuple

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

6.7RACSequence

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

6.8RACCommand

RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,他可以很方便的监控事件的执行过程。

使用场景

监听按钮点击,网络请求

6.9RACMulticastConnection

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

6.10 RACScheduler

RAC中的队列,用GCD封装的。

6.11 RACUnit

表⽰stream不包含有意义的值,也就是看到这个,可以直接理解为nil.

6.12RACEvent

把数据包装成信号事件(signal event)。它主要通过RACSignal的-materialize来使用,然并卵。

七).ReactiveCocoa开发中常见用法。

7.1 代替代理:

rac_signalForSelector 用于替代代理。

7.2 代替KVO :

rac_valuesAndChangesForKeyPath 用于监听某个对象的属性改变。

7.3 监听事件:

rac_signalForControlEvents 用于监听某个事件。

7.4 代替通知:

rac_addObserverForName 用于监听某个通知。

7.5 监听文本框文字改变:

rac_textSignal 只要文本框发出改变就会发出这个信号。

7.6 处理当界面有多次请求时,需要都获取到数据时,才能展示界面

八).ReactiveCocoa常见宏。

8.1RAC

(TARGET, [KEYPATH, [NIL_VALUE]])用于给某个对象的某个属性绑定。// 只要文本框文字改变,就会修改label的文字 RAC(self.labelView,text) = _textField.rac_textSignal;

8.2RACObserve(self, name)

:监听某个对象的某个属性,返回的是信号。
[RACObserve(self.view, center) subscribeNext:^(id x) { NSLog(@"%@",x); }];

8.3@weakify(Obj)和@strongify(Obj)

,一般两个都是配套使用,在主头文件(ReactiveCocoa.h
)中并没有导入,需要自己手动导入,RACEXTScope.h
才可以使用。但是每次导入都非常麻烦,只需要在主头文件自己导入就好了。

8.4RACTuplePack

:把数据包装成RACTuple(元组类)
// 把参数中的数据包装成元组 RACTuple *tuple = RACTuplePack(@10,@20);

8.5RACTupleUnpack

:把RACTuple(元组类)解包成对应的数据。
// 把参数中的数据包装成元组 RACTuple *tuple = RACTuplePack(@"xmg",@20); // 解包元组,会把元组的值,按顺序给参数里面的变量赋值 // name = @"xmg" age = @20 RACTupleUnpack(NSString *name,NSNumber *age) = tuple;

参考资料
ReactiveCocoa之基础篇
ReactiveCocoa之进阶篇
函数响应式编程


相关文章

  • ReactiveCocoa 优秀博客阅读笔记

    **推荐:ReactiveCocoa和MVVM专题,汇聚一些优秀相关博客 ** ReactiveCocoa为事件定...

  • ReactiveCocoa学习笔记整理(二)

    此文章是ReactiveCocoa学习笔记的第二篇,未阅读第一篇的童鞋,请先查阅第一篇ReactiveCocoa学...

  • ReactiveCocoa学习

    到我写这篇文章为止,ReactiveCocoa版本为5.0.1,搜了很多博客来了解ReactiveCocoa的基础...

  • [个人博客搬运]ReactiveCocoa学习笔记

    ReactiveCocoa学习笔记 前言 ReactiveCocoa是一个很有意思的FRP框架,用法简单,但是理解...

  • 网页书签

    myBookMarks ReactiveCocoa Draveness /分析:Draveness的博客 Reac...

  • ReactiveCocoa 源码阅读笔记

    OC 的动态化使得我们可以很容易的运用它的运行时做不少有趣的事情。不过从另一个角度来讲,更自由的编程范式可能就意味...

  • RAC

    本篇文章是用来记录一下有关 ReactiveCocoa 的学习笔记。 简介 ReactiveCocoa(简称 RA...

  • LPDMvvmKit系列之UITableView的改造

    阅读本文需要对ReactiveCocoa足够了解,也可以参阅图解ReactiveCocoa基本函数 Cocoa T...

  • 初识ReactiveCocoa

    原文 : 与佳期的个人博客(gonghonglou.com) ReactiveCocoa 是一个Objective...

  • ReactiveCocoa

    李忠的博客(http://limboy.me/) ReactiveCocoa 讨论会 文/Yangcs(简书作者)...

网友评论

本文标题:ReactiveCocoa 优秀博客阅读笔记

本文链接:https://www.haomeiwen.com/subject/jdgrjttx.html