我想在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];
}];
}];
}
我更喜欢在不同的块中分离工作,因为它提供了逻辑分离。我想保证最后发送最后一条订阅消息(执行动画块的消息)。我怎么能这样做?
在我看来,我正在寻找的可能是链接(而不是多个独立的信号集作为订阅,就像我在这个例子中所做的那样),但我不能相当连接点。
答案 0 :(得分:2)
为什么不直接更新不同的部分:
- (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:
实现相同的效果。