Я немного запутался насчет UITableViewController ... Насколько я понимаю, они обычно являются делегатом и источником данных UITableView (хотя это можно сделать так, что они разные).
Однако в некоторых случаях, например, при встраивании UITableViewController в UITabBarViewController в Interface Builder, мы запускаем наш контроллер табличного представления в IB. Поэтому в моем понимании вызывается инициализатор по умолчанию.
Но в этом случае у меня есть этот кусок кода:
@interface Settings : UITableViewController {
}
И в IB я вижу, что делегат и источник данных UITableView подключены к этому классу. Мой вопрос: почему нам не нужно явно говорить, что это следующее:
@interface Settings : UITableViewController <UITableViewDelegate, UITableViewDataSource>
{
}
А в файле .m:
- (void)viewDidLoad {
[super viewDidLoad];
[tableView setDelegate:self];
[tableView setDataSource:self];
}
Я действительно сталкивался с некоторыми случаями, когда мне приходилось несколько раз явно кодировать вышеприведенное, чтобы что-то работало. Хотя для меня до сих пор остается загадкой, зачем это нужно ...