- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是一名 C# 开发人员,刚开始进行 Objective-C/Cocoa Touch 编程。我想我可能弄错了一些术语,因为我一直在“以 C# 方式”思考它们。具体来说,我在各种文档和教程中遇到了术语“协议(protocol)”。
在 Objective-C 中,协议(protocol)到底是什么?它可以与 C# 界面相提并论吗?
下面的声明是否等同于“该类正在实现协议(protocol) UITextFieldDelegate”?还是将 UITextFieldDelegate 与 C# 中的泛型类型参数进行比较?
@interface MyViewController : UIViewController <UITextFieldDelegate> { }
最佳答案
在 Objective-C 中,协议(protocol)是选择器/方法集合的名称,类似于 Java 中的接口(interface)声明(可能也在 C# 中)。
@interface MyViewController : UIViewController <UITextFieldDelegate> { }
表示类MyViewController
继承自类UIViewController
并采用/实现协议(protocol)UITextFieldDelegate
。
这意味着 MyViewController
必须实现在 UITextFieldDelegate
中声明的所有方法。
编辑:似乎随着 Objective-C 2.0 的引入,引入了将协议(protocol)方法标记为 @optional
和 @required
的可能性。参见 Apples Objective-C documentation 的可选协议(protocol)方法
部分.
维基百科关于 Objective-C Protocols 的有用链接.
关于iphone - "adopt a protocol"在 Objective-C/Cocoa 文档中到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844394/
我是一名优秀的程序员,十分优秀!