使用RACSignals的DataSource方法

时间:2014-05-06 10:31:20

标签: objective-c reactive-cocoa

我可以使用返回值的RACSignal实现dataSource方法。 我不喜欢这样的事情 - [self rac_signalForSelector:@selector(tableView:numberOfRowsInSection:)]{ return @10;}];

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

2 个答案:

答案 0 :(得分:8)

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

另一方面,"数据源"许多Cocoa框架共有的模式要求您提供基于拉式的API 。也就是说,您拥有一些值源,并通过实现-tableView:numberOfRowsInSection:等查询方法将这些值提供给其他对象。当需要知道指定节中的表行数时,其他对象通常会同步调用这些方法。

这两个概念彼此之间存在很大差异。使用ReactiveCocoa"很难实现数据源。 (尽管ReactiveCocoa肯定对您应用的其他区域有用)。

答案 1 :(得分:3)

RAC没有提供定义返回值的方法的能力。相反,您必须实现该方法以返回适当的值,并且可以使用该方法调用-rac_signalForSelector:来获取信号。事情是,为什么你想要一个像numberOfRowsInSection:

这样的方法的信号