RACObserve subscribeNext performSelector:afterDelay:未调用

时间:2016-02-16 09:40:11

标签: 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];
   }];

第一次代码到达performSelector时,一切正常,延迟后调用saveUserChanges方法。但是,代码多次到达相同的performSelector行,但saveUserChanges方法永远不会被再次调用。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

也许你的弱者被释放了。确保该块中的weakSelf不为零。

当您在街区中使用弱对象时,最好再次强化它:

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