这已经困扰了我很长一段时间。为UITableView定义了两个委托协议:实际委托和数据源。但是,考虑到方法在两者之间分配的方式,我还没有看到在两个单独的对象中实现协议的实际情况。任何人都可以给我一个例子,当它真的有意义吗?
答案 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?
另一方面,根据应用程序设计,可能需要将数据源与委托分开:
UITableView delegate and datasource in a separate class after parsing