gpt4 book ai didi

reactive-cocoa - RACChannel : not seeing the two-way binding I expected

转载 作者:行者123 更新时间:2023-12-04 11:07:20 30 4
gpt4 key购买 nike

(也可以在 GitHub 上向 ReactiveCocoa 人员发表评论。)

我在一个非常简单的 RACTest (source is on GitHub) 中尝试 ReactiveCocoa试图通过实际使用它来巩固我的理论理解。

我有一个 RACChannel我认为,这提供了 RAC() 之间的双向绑定(bind)。编辑左值和我指定为 RACChannel 的参数的任何内容.

My usage好像:

// Map the ticker's accumulationEnabled property to self.paused.
RAC(self, paused) = [RACChannelTo(_ticker, accumulateEnabled) deliverOn:[RACScheduler mainThreadScheduler]];

我看到变化从 _ticker.accumulateEnabled 向一个方向流动至 self.paused , 但更改为 self.paused没有流回 _ticker .

我是不是误会了 RACChannel ?它有什么用,这不是预期的用途吗?

最佳答案

我误解了如何使用 RACChannel .使用 RACChannelTo在任务的双方都按预期工作:
RACChannelTo(self, paused) = RACChannelTo(_ticker, accumulateEnabled);
更改 self.paused 的主线程交付有点复杂,但并不可怕:

RACChannelTerminal *accumulateChannel = RACChannelTo(_ticker, accumulateEnabled);
RAC(self, paused) = [accumulateChannel deliverOn:RACScheduler.mainThreadScheduler];
[[RACObserve(self, paused) skip:1] subscribe:accumulateChannel];

(我仍在试图理解为什么 skip:1 是必要的,但没有它,RAC 会破坏堆栈,所以我保留它 per the GitHub issue 。)

关于reactive-cocoa - RACChannel : not seeing the two-way binding I expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713763/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com