【发布时间】:2014-05-06 10:31:19
【问题描述】:
我可以用返回值的 RACSignal 实现 dataSource 方法吗?
我不想要这样的-
[self rac_signalForSelector:@selector(tableView:numberOfRowsInSection:)]{
return @10;}];
使用信号时如何处理需要返回值的方法?
【问题讨论】:
标签: objective-c reactive-cocoa
我可以用返回值的 RACSignal 实现 dataSource 方法吗?
我不想要这样的-
[self rac_signalForSelector:@selector(tableView:numberOfRowsInSection:)]{
return @10;}];
使用信号时如何处理需要返回值的方法?
【问题讨论】:
标签: objective-c reactive-cocoa
ReactiveCocoa 与所有基于 Reactive Extensions 的框架一样,是围绕 基于推送的 API 设计的,用于对一系列值进行操作。也就是说,您有一些值的来源,然后您使用信号组合来对新值的到来做出反应。
另一方面,许多 Cocoa 框架共有的“数据源”模式要求您提供基于拉取的 API。也就是说,您有一些值的来源,并通过实现像-tableView:numberOfRowsInSection: 这样的查询方法使这些值可用于其他对象。其他对象在需要知道指定section的表行数时,一般会同步调用这些方法。
这两个概念相互矛盾。很难“使用 ReactiveCocoa 实现数据源”(尽管 ReactiveCocoa 肯定对您应用程序的其他领域有用)。
【讨论】:
RAC 不提供定义返回值的方法的能力。相反,您必须实现该方法以返回适当的值,并且您可以调用-rac_signalForSelector: 来获取信号。问题是,您为什么要为 numberOfRowsInSection: 之类的方法提供信号?
【讨论】: