没有<uitableviewdelegate的UITableView,uitableviewdatasource =“”>仍然有效!</uitableviewdelegate,>

时间:2011-05-16 16:46:03

标签: cocoa-touch ios uitableview

我已经读过,每当你使用UITableView时,你应该将你的控制器类符合<UITableViewDelegate, UITableViewDataSource>协议(如果你没有使用定制的UITableViewController类)。

所以我的超类是UIViewController但是我忘了在.h文件中添加<UITableViewDelegate, UITableViewDataSource>声明。出于某种原因,该表仍然有效。它从类中获取数据,单击单元格按预期工作。

有人可以向我解释一下 - 为什么它有效?

1 个答案:

答案 0 :(得分:8)

如果您的实现中仍有适当的方法,它将正常工作。当表视图需要调用这些方法时,它不会检查您的类是否已声明它符合UITableViewDelegate或UITableViewDataSource,而是检查您的类是否实现了所需的方法。

明确声明您符合协议的要点是编译器可以生成警告。如果您尝试将ViewController的一个实例分配给一个id,但是没有在头文件中说明,那么您将收到编译器警告,但如果实现了所有必需的UITableViewDataSourceDelegate方法,它仍然可以工作。