RACOberve subscribeNext 立即被调用
RACObserve subscribeNext get called instantly
我正在使用 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
属性 在我调用 RACObserve subscribeNext
后没有改变。也许这是正常行为, subscribeNext
应该在开始观察后第一次被调用?如果这是正常的,我该如何避免这种情况?
是的,这是正常的——通过 RACObserve
创建的信号总是会立即发送它们的初始值。如果你只想要后续值,你可以像这样跳过初始值:
[[RACObserve(_currentUser, username) skip:1] subscribeNext:^(NSString *newUserName) {
[weakSelf performSelector:@selector(saveUserChanges) withObject:nil afterDelay:.1];
}];
我正在使用 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
属性 在我调用 RACObserve subscribeNext
后没有改变。也许这是正常行为, subscribeNext
应该在开始观察后第一次被调用?如果这是正常的,我该如何避免这种情况?
是的,这是正常的——通过 RACObserve
创建的信号总是会立即发送它们的初始值。如果你只想要后续值,你可以像这样跳过初始值:
[[RACObserve(_currentUser, username) skip:1] subscribeNext:^(NSString *newUserName) {
[weakSelf performSelector:@selector(saveUserChanges) withObject:nil afterDelay:.1];
}];