【问题标题】:DataSource methods with RACSignals带有 RACSignals 的 DataSource 方法
【发布时间】:2014-05-06 10:31:19
【问题描述】:

我可以用返回值的 RACSignal 实现 dataSource 方法吗? 我不想要这样的- [self rac_signalForSelector:@selector(tableView:numberOfRowsInSection:)]{ return @10;}];

使用信号时如何处理需要返回值的方法?

【问题讨论】:

    标签: objective-c reactive-cocoa


    【解决方案1】:

    ReactiveCocoa 与所有基于 Reactive Extensions 的框架一样,是围绕 基于推送的 API 设计的,用于对一系列值进行操作。也就是说,您有一些值的来源,然后您使用信号组合来新值的到来做出反应。

    另一方面,许多 Cocoa 框架共有的“数据源”模式要求您提供基于拉取的 API。也就是说,您有一些值的来源,并通过实现像-tableView:numberOfRowsInSection: 这样的查询方法使这些值可用于其他对象。其他对象在需要知道指定section的表行数时,一般会同步调用这些方法。

    这两个概念相互矛盾。很难“使用 ReactiveCocoa 实现数据源”(尽管 ReactiveCocoa 肯定对您应用程序的其他领域有用)。

    【讨论】:

    • 但是 RAC 中有一个“基于拉取”的序列。我可以使用它们吗?
    • 是的,但我不熟悉一种自动生成数据源方法的方法,这些方法又从 RACSequence 中提取它们的值。此外,RACSequences 很可能会在 ReactiveCocoa 的下一个版本 JFYI 中被弃用。
    【解决方案2】:

    RAC 不提供定义返回值的方法的能力。相反,您必须实现该方法以返回适当的值,并且您可以调用-rac_signalForSelector: 来获取信号。问题是,您为什么要为 numberOfRowsInSection: 之类的方法提供信号?

    【讨论】:

      猜你喜欢
      • 2012-09-08
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      相关资源
      最近更新 更多