Objective-C/Cocoa文档中"采用协议"究竟是什么意思?

dri*_*iis 8 iphone objective-c

我是一名C#开发人员,开始使用Objective-C/Cocoa Touch编程.我想我可能有些错误,因为我一直在考虑它们"C#方式".具体来说,我在各种文档和教程中使用了术语"协议".

在Objective-C中,协议究竟是什么?它可以与C#接口进行比较吗?

以下声明是否与"该类正在实现协议UITextFieldDelegate"相同?或者是否要将UITextFieldDelegate与C#中的泛型类型参数进行比较?

@interface MyViewController : UIViewController <UITextFieldDelegate> { }
Run Code Online (Sandbox Code Playgroud)

MKr*_*ert 7

在Objective-C中,protocoll是选择器/方法集合的名称,就像Java中的接口声明(可能也在C#中).

@interface MyViewController : UIViewController <UITextFieldDelegate> { }
Run Code Online (Sandbox Code Playgroud)

表示类MyViewController继承自类UIViewController并采用/实现协议UITextFieldDelegate.

这意味着MyViewController必须实现在中声明的所有方法UITextFieldDelegate.

编辑:似乎在引入目标C 2.0的作为可能性标记的协议的方法@optional@required进行了介绍.见Optional Protocol Methods苹果Objective-C的文档.

来自wikibooks关于Objective-C Protocols的有用链接.