RACSignal 使用笔记

398 阅读1分钟

认识信号

信号定义:任何携带信息的东西都可以被称为信号; 在通信系统中:信号是传递有关一些现象的行为或属性的信息的函数。 信号是运载消息的工具,是消息的载体。 在ReactiveCocoa 中,可以把RACSignal 想象成管道,是用来作为消息传递的工具。

RACSignal:信号类,本身不具有发送信号的功能。是抽象类 RACStream 的子类,另一个RACSequence 也是抽象类 RACStream的子类。 可以说RACSignal是 ReactiveCocoa 中的核心类,整个ReactiveCocoa 框架都是围绕RACSignal来进行组织的。对RACSignal 的简单理解就是水管,它里面有一连串的珠子,当珠子流到对应的订阅者 RACSubscriber,就会收到通知执行对应的命令。在整个ReactiveCocoa中,所有的消息都是通过信号来传递的。

Signal使用过程: 1、创建信号; 2、订阅信号; 3、发送信号。

创建信号: 通过 createSignal 方法创建信号;

	return [RACDynamicSignal createSignal:didSubscribe];
}

内部是通过它的子类,RACDynamicSignal 来实现,在调用创建信号的方法时候,RACDynamicSignal创建来一个实例,并且指向一个传入的 didSubscribe blok。当每次有订阅着订阅当前信号时候,都会执行一次blok方法,向订阅者发送信息。 这个Blok: RACDisposable * (^didSubscribe)(id subscriber); 为每个传入订阅者订阅时调用。

	RACDynamicSignal *signal = [[self alloc] init];
	signal->_didSubscribe = [didSubscribe copy];
	return [signal setNameWithFormat:@"+createSignal:"];
}