ReactiveCocoa-如何使用' switchToLatest'?处理信号?

时间:2014-07-13 10:57:30

标签: ios objective-c reactive-cocoa

我有一个带有viewModel属性的UITableViewCell。随着tableview单元被重用,我希望它能够绑定到最新 viewModel的属性,如下所示:

RAC(self.titleLabel, text) =
[[RACObserve(self, viewModel) map:^id(MyViewModel *viewModel) {
    return RACObserve(viewModel, title);
}]
switchToLatest];

我所看到的问题是细胞永远不会被释放。 当单元格应该解除分配时,有没有办法处理信号?

2 个答案:

答案 0 :(得分:3)

我的错! RACObserve()会保留自我 - 我错过了@strongify(self)。 解决了:

@weakify(self);
RAC(self.titleLabel, text) =
[[RACObserve(self, viewModel) map:^id(MyViewModel *viewModel) {
   @strongify(self);
   return RACObserve(viewModel, title);
}]
switchToLatest];

答案 1 :(得分:3)

让我补充说,有一种更简洁的写作方式。假设您正在为您的单元格使用故事板或xib:

- (void)awakeFromNib {
    [super awakeFromNib];
    RAC(self, textLabel.text) = RACObserve(self, viewModel.title);
}