RacChannel

RacChannel ---RacChannelTerminal+++UIControl
RacKVOChannel ------RACChannelTo
RacObserve -------RacDelegateProxy

1, RACKVOChannel
雙向綁定+繼承于RACChannel

代理人模式;實(shí)現(xiàn)KVO;
底層還是依賴于RACKVO

    [RACKVOProxy.sharedProxy addObserver:self forContext:(__bridge void *)self];
    [strongTarget addObserver:RACKVOProxy.sharedProxy forKeyPath:self.keyPath options:options context:(__bridge void *)self];



RACChannelTo


 [[RACKVOChannel alloc] initWithTarget:(TARGET) keyPath:@keypath(TARGET, KEYPATH) nilValue:(NILVALUE)][@keypath(RACKVOChannel.new, followingTerminal)]

管道------ A[0] = 111; ///實(shí)現(xiàn)中括號(hào)下標(biāo)操作符

- (RACChannelTerminal *)objectForKeyedSubscript:(NSString *)key {
    NSCParameterAssert(key != nil);

    RACChannelTerminal *terminal = [self valueForKey:key];
    NSCAssert([terminal isKindOfClass:RACChannelTerminal.class], @"Key \"%@\" does not identify a channel terminal", key);

    return terminal;
}

- (void)setObject:(RACChannelTerminal *)otherTerminal forKeyedSubscript:(NSString *)key {
    NSCParameterAssert(otherTerminal != nil);

    RACChannelTerminal *selfTerminal = [self objectForKeyedSubscript:key];
    [otherTerminal subscribe:selfTerminal];
    [[selfTerminal skip:1] subscribe:otherTerminal];
}

2,
使用KVC實(shí)現(xiàn)+ RACChannel

- (RACChannelTerminal *)rac_channelForControlEvents:(UIControlEvents)controlEvents key:(NSString *)key nilValue:(nullable id)nilValue;



    [[self
        rac_liftSelector:@selector(valueForKey:) withSignals:eventSignal, nil]
        subscribe:channel.followingTerminal];


    [self rac_liftSelector:@selector(setValue:forKey:) withSignals:valuesSignal, [RACSignal return:key], nil];





?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • RACChannel可以被看成是一個(gè)由兩個(gè)并行工作的signal組成的雙向連接。例如,當(dāng)連接一個(gè)view和一個(gè)mo...
    解放者莫雷爾閱讀 1,678評論 0 0
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,579評論 30 472
  • 1.項(xiàng)目經(jīng)驗(yàn) 2.基礎(chǔ)問題 3.指南認(rèn)識(shí) 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎(chǔ) 2.CocoaTouch...
    扶光啟玄閱讀 5,186評論 0 13
  • 題意:給定n個(gè)二元數(shù),選取n-k個(gè)二元組合,使得sigma(a[i])/sigma(b[i])最大.思路:所以這就...
    Anxdada閱讀 410評論 0 0
  • 從大學(xué)畢業(yè)后,身邊的人陸續(xù)的結(jié)婚、生小孩了。去年算是夸張的一年,不算我的同學(xué)、朋友,還是有八九家親戚的孩子結(jié)婚。如...
    愛發(fā)呆的菇?jīng)?/span>閱讀 250評論 0 0

友情鏈接更多精彩內(nèi)容