Ваш объект был установлен в качестве источника данных UITableView где-то. Скорее всего, путем установления соединения в InterfaceBuilder, хотя это просто сделать в коде, установив свойство dataSource
UITableView:
- (void) setUpMyJunkMan
{
myTableView.dataSource = self;
}
Как только вы установите свой объект в качестве источника данных, табличное представление будет вызывать метод по мере необходимости, чтобы определить, что ему нужно нарисовать или как ему нужно реагировать на события.
Ваш объект должен реализовывать протокол UITableViewDataSource
(хотя, если вы подключили источник данных через InterfaceBuilder, если вы этого не сделаете, жалоб может не быть - это скорее проверка времени компиляции, чем время выполнения один).
Если вы посмотрите на объявление UITableViewDataSource
, вы увидите, что число методов @optional
. Остальные @required
; Вы должны реализовать их, чтобы выполнить контракт протокола.
Это ключевое различие между источниками данных и делегатами. Делегаты могут по желанию реализовать любой из объявленных методов. Источники данных создают гораздо более формальные отношения между двумя объектами, в которых некоторые методы должны быть реализованы.