代码之家  ›  专栏  ›  技术社区  ›  driis

在Objective-C/Cocoa文档中,“采用协议”究竟意味着什么?

  •  8
  • driis  · 技术社区  · 15 年前

    我是一个C开发人员,正在开始Objective-C/CocoaTouch编程。我想我可能弄错了一些术语,因为我一直在想它们“C方式”。 具体来说,我在各种文档和教程中都提到了术语“协议”。

    在Objective-C中,什么是协议?它能与C接口相比吗?

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

    @interface MyViewController : UIViewController <UITextFieldDelegate> { }
    
    2 回复  |  直到 15 年前
        1
  •  7
  •   MKroehnert    15 年前

    在Objto-C中,协议集是选择器/方法集合的名称,并且类似于Java中的接口声明(也可能在C语言中)。

    @interface MyViewController : UIViewController <UITextFieldDelegate> { }
    

    意味着这个班 MyViewController 从类继承 UIViewController 并采用/执行协议 UITextFieldDelegate .

    这意味着 我的视图控制器 必须实现中声明的所有方法 UITextFieldDelegate .

    编辑:似乎随着Objective-C2.0的引入,将协议的方法标记为 @optional @required 介绍。 见节 Optional Protocol Methods 属于 Apples Objective-C documentation .

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

        2
  •  1
  •   vodkhang    15 年前

    协议在某些方面像一个接口。 如果在协议中声明某个方法是可选的,那么类采用它不需要实现这些方法。如果不是,则类必须实现它。

    推荐文章