【问题标题】:Overriding super class methods in Objective-C在 Objective-C 中重写超类方法
【发布时间】:2010-12-11 12:37:39
【问题描述】:

如果objective-c中的子类要覆盖超类的方法,是否也必须匹配返回类型?

【问题讨论】:

  • 重写超类方法以返回不同的类型几乎总是一个坏主意。这样做会使您的子类的 API 与超类的用法不兼容,因此客户端代码无法用您的子类替换超类。糟糕,糟糕,糟糕。

标签: objective-c signature overriding


【解决方案1】:

是的,它必须有相同的选择器。

更新:

IIRC 参数也需要具有相同的类型。

更新:

似乎同一选择器的所有方法在动态链接时需要在所有类中具有等效类型,而不是静态链接:linky

【讨论】:

    【解决方案2】:

    是的,是一样的,

    但需要注意的一点是,您需要传递返回类型的超类。

    例如:

    -(UIScrollview)method:(id)argument;
    

    你也可以返回 UIview。 (简单来说就是返回类型的超类)。

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      相关资源
      最近更新 更多