【问题标题】:What does it mean to "conform to protocol" in Objective-C/Xcode?Objective-C/Xcode 中的“符合协议”是什么意思?
【发布时间】:2015-07-13 15:26:28
【问题描述】:

在开发 iOS 教程应用程序时,我遇到了很多“这个东西符合那个协议”。这是什么意思?

我看到的有两种类型:

  1. 沿线id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections] [section];

  2. 通过将一些委托设置为 self,然后必须实现委托方法或类似的方法。

有什么区别,我们为什么要这样做?

编辑:https://stackoverflow.com/a/22794742/5020627

【问题讨论】:

    标签: ios objective-c xcode


    【解决方案1】:

    协议是实现某些方法的承诺。遵守协议意味着你既要做出承诺,又要履行承诺。

    您的id <NSFetchedResultsSectionInfo> 示例是“实现NSFetchedResultsSectionInfo 协议所需方法的任何类型的对象”。 (id 在 Objective-C 中的意思是“任何类型的对象”。)

    大多数setDelegate: 方法要求参数符合某些协议。因此,在将自己指定为代表之前,您需要确保添加承诺(作为 @interface 的一部分)并实现方法(以履行承诺)。

    【讨论】:

    • 对于id <NSFetchedResultsSectionInfo>部分,我只是写了那行,不需要实现NSFetchedResultsSectionInfo的任何必需方法,就像中的部分只是变量定义的一部分。但是通过将自身视图控制器定义为委托,我必须将类设置为既符合协议又实现委托方法。这就是我感到困惑的原因。
    • id <NSFetchedResultsSectionInfo>sectionInfo 的类型。这不是 你的 类型。所以[self.fetchedResultsController sections] [section] 返回的任何对象都必须符合协议。你的视图控制器不需要。
    • 这很有意义。谢谢!
    【解决方案2】:

    Objective-C 允许你定义协议,声明方法 预计将用于特定情况。本章描述 定义正式协议的语法,并解释如何标记 类接口符合协议,这意味着 类必须实现所需的方法。

    https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2014-01-17
      • 2011-02-16
      相关资源
      最近更新 更多