为什么委托方法在没有声明协议一致性的情况下工作?

时间:2013-06-26 06:12:10

标签: ios delegates uitextfield objective-c-protocol

我有一个UITextField,我将其拖动到其所有者,以在故事板中设置delegate

在我的controller.h文件中,我没有声明该类符合UITextFieldDelegate协议。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string有效!它只是有效!

我想知道为什么?

在我将UITableView设置为没有UITableViewDelegateUITableViewDataSource的控制器之前,我遇到过这个问题。

1 个答案:

答案 0 :(得分:2)

调用方法是因为委托对象(UIWebViewUITextFieldUITableView等)不检查委托是否符合协议。他们只对实际响应某种委托方法感兴趣。

毕竟,协议声明只是编译器的提示。