【问题标题】:ReactiveCocoa- How to dispose of a signal using 'switchToLatest'?ReactiveCocoa-如何使用“switchToLatest”处理信号?
【发布时间】:2014-07-13 10:57:30
【问题描述】:

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

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

我看到的问题是单元格在应该释放的时候永远不会释放。 当单元格应该被释放时,有没有办法处理信号?

【问题讨论】:

    标签: ios objective-c reactive-cocoa


    【解决方案1】:

    我的错! RACObserve() 将保留自我——我错过了 @strongify(self)。 解决方法:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-14
        • 2014-07-12
        • 1970-01-01
        相关资源
        最近更新 更多