Задача C: Каково влияние отсутствия протокола <UIActionSheetDelegate>в заголовочном файле? - PullRequest
2 голосов
/ 05 апреля 2011

Я реализую лист действий и обнаружил, что код работает даже без включения протокола в заголовочный файл. Есть ли влияние в том числе нет?

Спасибо

Zhen

1 Ответ

3 голосов
/ 05 апреля 2011

Нет влияния на время выполнения *, но включая спецификацию протокола:

  1. позволяет компилятору проверить, что вы реализовали все необходимые методы (например, забыли реализовать -tableView:cellForRowAtIndexPath: с UITableViewDataSourceвыдаст предупреждение), а

  2. позволяет составителю библиотеки ограничивать типы для делегатов, которые могут уверенно реагировать на ожидаемые методы (например, присвоение не-UIActionSheetDelegate id<UIActionSheetDelegate> дастпредупреждение)

(*: Технически список протоколов можно запрашивать во время выполнения, поэтому его включение может изменить поведение во время выполнения, но такая ситуация встречается редко.)

...