gpt4 book ai didi

ios - 等到代码完成后再通知 ReactiveCocoa 中的订阅者?

转载 作者:行者123 更新时间:2023-11-29 10:55:56 26 4
gpt4 key购买 nike

使用 ReactiveCocoa 和 KVO,如果你订阅了一些东西,它会在你改变你绑定(bind)的值时立即通知订阅者。假设我的状态取决于 user.firstName 和 user.lastName:

RAC(self.fullName) = [RACSignal 
combineLatest:@[RACAble(self.firstName), RACAble(self.lastName)]
reduce:^(NSString* firstName, NSString* lastName) {
return [NSString stringWithFormat:@"%@ %@", firstName, lastName];
}];

self.firstName = @"Bob";
self.lastName = @"Wilson";
self.firstName = @"Amy";
self.lastName = @"Johnson";

// ...

- (void)setFullName:(NSString*)fullName
{
NSLog(@"FULL NAME %@", fullName);
// Bob Wilson
// Amy Wilson
// Amy Johnson
}

只要设置了两个变量,每次我更改 firstNamelastName 时它都会调用 setFullName。

我希望它等到更改“稳定”后才调用全名,因此,如果我在同一个函数中设置值,它会使用最终值调用 setFullName 一次.

我该怎么做?

最佳答案

您可以使用 zip: 而不是 combineLatest:。这将等待所有输入信号发送一个值。这样,只有当 firstNamelastName 设置发生时,订阅者才会收到通知。

如果这是 Not Acceptable ,并且有可能只有 firstNamelastName 会发生变化,那么您可以将 throttle: 设置为combineLatest: 的输出。这样,如果节流时间内发生多次更改,则只会将最后一个值发送给订阅者。

旁注:如果您可以根据当前值构造 fullName,那么为什么要将它存储在属性中?您可以将其用作信号。

关于ios - 等到代码完成后再通知 ReactiveCocoa 中的订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419578/

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