ReativeCocoa是一個(gè)非常值得我們學(xué)習(xí)的優(yōu)秀的框架,典型的響應(yīng)式和函數(shù)式混合思想設(shè)計(jì).
一直在研究它的源碼,沒(méi)時(shí)間整理,現(xiàn)在整理一下.
從淺到深來(lái)寫(xiě),并且不斷跟新....
//函數(shù)式+響應(yīng)式FRP
//1通過(guò)RACSignal創(chuàng)建一個(gè)信號(hào)(默認(rèn)是冷信號(hào))
//2通過(guò)訂閱者訂閱這個(gè)信號(hào)(變成熱信號(hào))
// 3發(fā)送信號(hào)
//1創(chuàng)建信號(hào)
//底層實(shí)現(xiàn)流程
//didSubscreibe(block)
//利用didSubScriber發(fā)送數(shù)據(jù)
//1 RACDynamicSignal創(chuàng)建的真實(shí)信號(hào)類
// 2保存didSubScribe
//signal->_didSubscribe = [didSubscribe copy];
RACSignal*signal = [RACSignalcreateSignal:^RACDisposable*(id subscriber) {
//發(fā)送數(shù)據(jù)subscriber它來(lái)發(fā)送
//1獲取到存取的nextBlock
//2執(zhí)行nextBlock
[subscribersendNext:@"3333"];
returnnil;
}];//函數(shù)式思想
//2訂閱信號(hào)
//nextBlock調(diào)用:只要訂閱者發(fā)送數(shù)據(jù)就會(huì)調(diào)用
//1創(chuàng)建訂閱者
//RACSubscriber *o = [RACSubscriber subscriberWithNext:nextBlock error:NULL completed:NULL];
//2保存nextBlock
//subscriber->_next = [next copy];
//2緊接著進(jìn)入訂閱信號(hào)的方法
//執(zhí)行didSubscribe Block
//RACDisposable *innerDisposable = self.didSubscribe(subscriber);
[signalsubscribeNext:^(idx) {
NSLog(@"%@",x);
}];//響應(yīng)式編程
流程圖如下: