Почему методы делегата работают без объявления соответствия протокола?

У меня есть такой UITextFieldи перетаскиваю его к его владельцу, чтобы установить delegate в раскадровке.

И в моем файле controller.h я не объявлял класс соответствующим UITextFieldDelegate протокол.

Но - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string работает! Это просто работает!

И мне интересно, почему?

Я встречал это однажды, когда я установил UITableView на контроллер, который не имеет UITableViewDelegate а также UITableViewDataSource,

1 ответ

Решение

Методы вызываются, потому что делегирующие объекты (UIWebView, UITextField, UITableView и т. д.) не проверяйте, соответствует ли делегат протоколу. Их интересует только то, отвечает ли он определенному методу делегата.

В конце концов, объявления протоколов являются лишь подсказками для компилятора.

Другие вопросы по тегам