拆分UITableDelegate和UITableDataSource是否有意义?

时间:2014-10-22 09:48:28

标签: ios objective-c uitableview

这已经困扰了我很长一段时间。为UITableView定义了两个委托协议:实际委托和数据源。但是,考虑到方法在两者之间分配的方式,我还没有看到在两个单独的对象中实现协议的实际情况。任何人都可以给我一个例子,当它真的有意义吗?

2 个答案:

答案 0 :(得分:0)

简短回答:是的。

答案很长:

它们分为两种不同的协议,因为它们用于不同的目的。

委托负责管理表本身的各个方面,例如选择,重新排序和删除行,...... UITableViewDelegate Protocol Reference

与此相反,UITableViewDatasource负责调整您的数据模型,以满足表的需要。它提供了表格的单元格,告诉表格有多少部分,每个部分有多少行,...... UITableViewDatasource Protocol Reference

根据您的数据以及您要对表格执行的操作,该代码可能会变得非常大。如果它变得太大,您可以将其拆分以获得更好的导航和概览。我可以想到这种区别可以提高代码质量的一种情况。

答案 1 :(得分:0)

IMO您不会因此而获得任何好处,因为数据源只提供与数据交互的方法,与委托相同。如果您的商店大而笨拙,分离数据源不会解决问题。

无附加值

强制分离时,您可能会遇到一些不可预测的行为:

UITableView issue when using separate delegate/dataSource

How to avoid big and clumsy UITableViewController on iOS?


这取决于应用程序的具体细节

另一方面,根据应用程序设计,可能需要将数据源与委托分开:

Lighter View Controllers

UITableView delegate and datasource in a separate class after parsing