gpt4 book ai didi

ios - ReactiveCocoa Combine最新 : and Zip:

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:39 25 4
gpt4 key购买 nike

我和这篇文章有同样的问题,Combine signals in ReactiveCocoa to a new one that fires when all change

所以我改为使用 zip:奇怪的问题是第二个信号数据不是最新的。我在第二个信号的 map 代码中记录了一个日志,它是最新的。例如

信号A,信号B

[self rac_liftSelector:@selector(doTask:) withSignals:[RACSignal zip:@[A, B]      
reduce^id(NSNumber* a, NSNumber* b){
a// is updated to latest
b// is the old value
}];

在 Signal B 中,我把 log 发现 b 值更新了。 如果我改回 CombineLatest:b 已更新但 a 是旧值并且未触发信号。

最佳答案

+[RACSignal zip:] 并不总能为您提供您传递给它的每个信号的最新值。它为您提供每个信号的下一个值。这意味着如果您有以下弹珠图:

Signal A | -(a0)-------------(a1)-----x
|
Signal B | ----(b0)-(b1)-(b2)----(b3)--->
|
zip:A,B | ----(a0,b0)-------(a1,b1)--x
|
+-------------------------------
-- Time -->

b0 发送时,您的信号将被发送 (a0, b0),当 a1 时,您的信号将被发送 (a1, b1) 被发送,然后不再发送任何值,因为 Signal A 仅在两个值后完成。

另一方面,

+[RACSignal combineLatest:reduce:] 将始终为您提供您传递给它的每个信号的最新值,无论何时 任一个 信号发送一个值(在所有信号都发送了至少一个值之后):

Signal A | -(a0)-----------------------(a1)-----x
|
Signal B | ----(b0)----(b1)----(b2)------------(b3)---->
|
cl/r:A,B | ----(a0,b0)-(a0,b1)-(a0,b2)-(a1,b2)-(a1,b3)->
|
+----------------------------------------------
-- Time -->

关于ios - ReactiveCocoa Combine最新 : and Zip:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22559868/

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