美文网首页
RacChannel

RacChannel

作者: 我是小胡胡123 | 来源:发表于2018-02-23 09:44 被阅读24次

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

1, RACKVOChannel
双向绑定+继承于RACChannel

代理人模式;实现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; ///实现中括号下标操作符

- (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实现+ 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];





相关文章

  • RacChannel

    RacChannel ---RacChannelTerminal+++UIControlRacKVOChannel...

  • ReactiveCocoa使用实践

    使用RACChannel进行双向数据绑定 RACChannel 非常适合于视图和模型之间的双向绑定,在对方的属性或...

  • RACChannel介绍

    RACChannel可以被看成是一个由两个并行工作的signal组成的双向连接。例如,当连接一个view和一个mo...

  • ReactiveObjC常用使用

    ReactiveObjC常用使用 处理一个界面,多个请求问题 RACChannel双向数据绑定 适合视图和模型之...

  • RAC双向绑定UITextField的正确姿势

    RAC双向绑定UITextField的正确姿势 一句话概括文章内容 UITextField使用RACChannel...

  • RACChannelTo() = RACChannelTo()的

    RACChannel 可以被理解为一个双向的连接,这个连接的两端都是 RACSignal 实例,它们可以向彼此发送...

网友评论

      本文标题:RacChannel

      本文链接:https://www.haomeiwen.com/subject/tqitxftx.html