我想在 self.personsArray
更新时执行各种任务,如下所示:
- (void)viewDidAppear:(BOOL)animated
{
@weakify(self)
[RACObserve(self, personsArray) subscribeNext:^(NSArray *personsArray) {
@strongify(self)
// update a set of views
[self.view setNeedsUpdateConstraints];
[self.view setNeedsLayout];
}];
[RACObserve(self, personsArray) subscribeNext:^(NSArray *personsArray) {
@strongify(self)
// update a second set of views
[self.view setNeedsUpdateConstraints];
[self.view setNeedsLayout];
}];
[RACObserve(self, personsArray) subscribeNext:^(NSArray *personsArray) {
@strongify(self)
[UIView animateWithDuration:0.4 animations:^{
[self.view layoutIfNeeded];
}];
}];
}
我更喜欢将工作分成不同的 block ,因为它提供了逻辑分离。我想保证最后发送的订阅消息(执行动画 block 的消息)。我怎样才能做到这一点?
在我看来,我正在寻找的可能是链接(而不是像我在本示例中所做的那样将多个独立的信号集作为订阅),但我无法完全连接这些点。
最佳答案
为什么不像这样更新不同的部分:
- (void)viewDidAppear:(BOOL)animated
{
@weakify(self)
[RACObserve(self, personsArray) subscribeNext:^(NSArray *personsArray) {
@strongify(self)
// update a set of views
[self updateFirstSetOfView];
[self updateSecondSetOfView];
[self doSomethingElse];
// Finally
[UIView animateWithDuration:0.4 animations:^{
[self.view layoutIfNeeded];
}];
}];
}
如果您更喜欢链接,则可以使用 -doNext:
实现相同的效果。
关于objective-c - 如何保证 ReactiveCocoa 中订阅者消息的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386493/