UITextFieldDelegate UIVewController的协议

Jam*_*Sun 1 iphone cocoa objective-c

我浏览了这个教程你的第一个iPhone应用程序,它工作得很好.我的问题是关于教程中的行,内容如下:

视图控制器也将成为文本字段的委托; 因此,它必须采用UITextFieldDelegate协议.要指定类采用协议,请在接口中在类继承的类的名称后面的尖括号(<>)中添加协议的名称.

如果我从视图控制器中删除协议,仍然会调用该方法(收到消息)并解除键盘.我注意到UITextFieldDelegate协议的所有方法都是可选的.如果是这种情况,为什么声明视图控制器遵守协议?我错过了什么?:-)

pix*_*x0r 5

因为程序员喜欢把事情组织起来.即使协议的所有方法都是可选的,如果它将被用作委托,那么正式声明您的类实现该协议仍然是好的形式.委托类也可能要求您的类实现协议 - 这意味着如果您实现方法但没有声明您实现协议,您将收到编译警告.