ReactiveCocoa之RACMulticastConnection使用(六)
RACMulticastConnection使用步骤: 1.创建信号+ (RACSignal *)createSignal:(RACDisposable * (^)(id<RACSubscriber> subscriber))didSubscribe 2.创建连接RACMulticastConnection *connect = [signal publish]; 3.订阅信号,注意:订阅的不在是之前的信号,而是连接的信号。[connect.signal subscribeNext:nextBlock] 4.连接[connect connect]
RACMulticastConnection底层原理: 1.创建connect,connect.sourceSignal -> RACSignal(原始信号) connect.signal -> RACSubject 2.订阅connect.signal,会调用RACSubject的subscribeNext,创建订阅者,而且把订阅者保存起来,不会执行block。 3.[connect connect]内部会订阅RACSignal(原始信号),并且订阅者是RACSubject 3.1.订阅原始信号,就会调用原始信号中的didSubscribe 3.2didSubscribe,拿到订阅者调用sendNext,其实是调用RACSubject的sendNext 4.RACSubject的sendNext,会遍历RACSubject所有订阅者发送信号。 4.1因为刚刚第二步,都是在订阅RACSubject,因此会拿到第二步所有的订阅者,调用他们的nextBlock
需求:假设在一个信号中发送请求,每次订阅一次都会发送请求,这样就会导致多次请求。 解决:使用RACMulticastConnection就能解决.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |