UITableView без все еще работает!

#cocoa-touch #ios #uitableview

#cocoa-touch #iOS #uitableview

Вопрос:

Я читал, что всякий раз, когда вы используете UITableView вы должны привести свой класс контроллера в соответствие с <UITableViewDelegate, UITableViewDataSource> протоколами (если вы не используете класс tailormade UITableViewController ).

Итак, мой суперкласс — это, UIViewController но я забыл добавить <UITableViewDelegate, UITableViewDataSource> объявление в файл .h. По какой-то причине таблица работает в любом случае. Он получает свои данные из класса, и щелчок по ячейкам работает, как ожидалось.

Кто-нибудь может мне это объяснить — почему это работает?

Ответ №1:

Если у вас все еще есть соответствующие методы в вашей реализации, это будет работать правильно. Когда в представлении таблицы требуется вызвать эти методы, он не проверяет, что ваш класс заявил, что он соответствует UITableViewDelegate или UITableViewDataSource, вместо этого он проверяет, реализует ли ваш класс требуемые методы.

Смысл явного указания того, что вы соответствуете протоколу, заключается в том, чтобы компилятор мог генерировать предупреждения. Если вы попытаетесь присвоить экземпляру вашего ViewController идентификатор, но не указали его в своем заголовке, вы получите предупреждения компилятора, но он все равно будет работать, если реализованы все требуемые методы UITableViewDataSourceDelegate.