RACCommand使用注意
signalBlock必须要返回一个信号,不能传nil.- 如果不想要传递信号,直接创建空的信号
[RACSignal empty]; - RACCommand中信号如果数据传递完,必须调用
[subscriber sendCompleted],这时命令才会执行完毕,否则永远处于执行中。 RACCommand需要被强引用,否则接收不到RACCommand中的信号,因此RACCommand中的信号是延迟发送的。
RACCommand设计思想:内部signalBlock为什么要返回一个信号,这个信号有什么用。- 在RAC开发中,通常会把网络请求封装到
RACCommand,直接执行某个RACCommand就能发送请求。 - 当
RACCommand内部请求到数据的时候,需要把请求的数据传递给外界,这时候就需要通过signalBlock返回的信号传递了。
- 在RAC开发中,通常会把网络请求封装到
如何拿到RACCommand中返回信号发出的数据。
- RACCommand有个执行信号源
executionSignals,这个是signal of signals(信号的信号),意思是信号发出的数据是信号,不是普通的类型。 - 订阅executionSignals就能拿到RACCommand中返回的信号,然后订阅signalBlock返回的信号,就能获取发出的值。
- RACCommand有个执行信号源
监听当前命令是否正在执行
executing使用场景,监听按钮点击,网络请求