iOS DeveloperiOS Development

ReactiveCocoa入门篇 (一)

2017-01-06  本文已影响69人  muyang_js的简书

导读

简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程。

官方的说,ReactiveCocoa(其简称为RAC)是由GitHub开源的一个应用于iOS和OS X开发的新框架。RAC具有函数式编程和响应式编程的特性。

先来上demo链接

RACSignal总结:

/**

*  RACSignal总结:

一. 核心:

1.核心:信号类

2.信号类的作用:只要有数据改变就会把数据包装成信号传递出去

3.只要有数据改变就会有信号发出

4.数据发出,并不是信号类发出,信号类不能发送数据

二. 使用方法:

1.创建信号

2.订阅信号

三. 实现思路:

1.当一个信号被订阅,创建订阅者,并把nextBlock保存到订阅者里面。

2.创建的时候会返回 [RACDynamicSignal createSignal:didSubscribe];

3.调用RACDynamicSignal的didSubscribe

4.发送信号[subscriber sendNext:value];

5.拿到订阅者的nextBlock调用

*/

重申下

//    RAC的核心就是信号,即RACSignal。

信号可以看做是传递信号的工具,当数据变化时,信号就会发送改变的信息,以通知信号的订阅者执行方法。

热/冷信号

默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发。

//创建信号    

RACSignal *signal = [RACSignal createSignal:^RACDisposable *(idsubscriber){

[subscriber sendNext:@"signal"];

[subscriber sendCompleted];

return nil;

}];

//订阅信号

[signal subscribeNext:^(id x){

DLog(@"x = %@", x);

} error:^(NSError *error){

DLog(@"NSError = %@", error);

}completed:^{

DLog(@"completed");

}];

RACSubject总结:

/**

*  RACSubject总结:

我们完全可以用RACSubject代替代理/通知,确实方便许多

这里我们点击TwoViewController的pop的时候 将字符串"ws"传给了ViewController的button的title。

步骤:

// 1.创建信号

RACSubject *subject = [RACSubject subject];

// 2.订阅信号

[subject subscribeNext:^(id x) {

// block:当有数据发出的时候就会调用

// block:处理数据

NSLog(@"%@",x);

}];

// 3.发送信号

[subject sendNext:value];

**注意:~~**

RACSubject和RACReplaySubject的区别

RACSubject必须要先订阅信号之后才能发送信号, 而RACReplaySubject可以先发送信号后订阅.

RACSubject 代码中体现为:先走第二个(TwoViewController)的sendNext,后走第一个(ViewController)的subscribeNext订阅

RACReplaySubject 代码中体现为:先走第一个(ViewController)的subscribeNext订阅,后走第二个(TwoViewController)的sendNext

可按实际情况各取所需。

*/

上一篇下一篇

猜你喜欢

热点阅读