RACObserve subscribeNext立即被调用

时间:2016-02-16 09:51:24

标签: ios objective-c reactive-cocoa

我使用的是ReactiveCocoa 2.5,因为我需要支持iOS 7.我是ReactiveCocoa的新手。我写了这段代码:

__weak typeof(self) weakSelf = self;
[RACObserve(_currentUser, username) subscribeNext:^(NSString *newUsername) {
    [weakSelf performSelector:@selector(saveUserChanges) withObject:nil afterDelay:.1];
}];

立即调用subscribeNext块。致电_currentUser后,username的{​​{1}}财产未发生变化。也许它的正常行为和RACObserve subscribeNext应该在开始观察后第一次被调用?如果这是正常的我怎么能避免这种情况?

1 个答案:

答案 0 :(得分:4)

是的,这是正常的 - 通过RACObserve创建的信号将始终立即发送其初始值。如果您只想要后续值,则可以跳过初始值,如下所示:

[[RACObserve(_currentUser, username) skip:1] subscribeNext:^(NSString *newUserName) {
    [weakSelf performSelector:@selector(saveUserChanges) withObject:nil afterDelay:.1];
}];