RACSubject:信號(hào)提供者,特點(diǎn):既能接收信號(hào)也能發(fā)送信號(hào)可以用同一對象.
為什么會(huì)有這個(gè)特點(diǎn):繼承RACSignal遵循<RACSubscriber>
@interface RACSubject : RACSignal <RACSubscriber>
內(nèi)部實(shí)現(xiàn)和簡單使用:
- 創(chuàng)建信號(hào)
1.0 內(nèi)部實(shí)現(xiàn)初始化_subscribers數(shù)組
- 創(chuàng)建信號(hào)
- 訂閱信號(hào)
2.0 創(chuàng)建訂閱者RACSubscriber
2.1 保存nextBlock
2.2 怎么處理訂閱的:[subscribers addObject:subscriber];
- 訂閱信號(hào)
- 發(fā)送信號(hào)sendNext
3.1 遍歷所有訂閱者RACSubscriber執(zhí)行nextBlock發(fā)送消息.
- 發(fā)送信號(hào)sendNext
代碼實(shí)現(xiàn)
作用:逆向傳值替代代理和block.
//1. 創(chuàng)建信號(hào)
RACSubject *subject = [RACSubject subject];
//2. 訂閱信號(hào)
[subject subscribeNext:^(id x) {
NSLog(@"訂閱者1接收到信號(hào)%@",x);
}];
[subject subscribeNext:^(id x) {
NSLog(@"訂閱者2接收到信號(hào)%@",x);
}];
//3. 發(fā)送信號(hào)
[subject sendNext:@"subject發(fā)送"];