【问题标题】:Two different classes inherit from the same super class in Objective-C两个不同的类从Objective-C中的同一个超类继承
【发布时间】:2013-06-05 13:51:10
【问题描述】:

我有一个自定义 UITableViewHeaderFooterView 类和一个自定义 UITableViewCell 类。这两个类共享一些方法和变量。我认为最好为共享方法和变量创建一个超类,而不是应付周围的事情。但是这两个自定义类已经有了不同的超类。

执行此操作的最佳做​​法是什么?

【问题讨论】:

  • 它们是根本不同的对象(基本上是一个单元格和一个视图)。它们不应该来自比 UIView 更常见的东西。仅仅因为对象看起来相似而共享状态是没有意义的。
  • 也许你是对的。我想也许它有一个模式。

标签: objective-c oop inheritance subclass superclass


【解决方案1】:

您可以在 UIView 上添加一个类别,检查哪些类实际使用它们,但它不会真正解决状态。 这些状态可能应该在委托中。

您也可以创建一个协议,但两者都需要实现。

除此之外,我可以想象他们可以共享同一个代表。

【讨论】:

    【解决方案2】:

    你想要的是多重继承,Objective C 不(直接)支持它。

    协议解决了某些不存在多重继承 (MI) 的问题 范围:从技术上讲,协议完全等同于 MI “抽象”类(参见下面“协议”的答案)。

    您可以使用其他三个选项:

    协议 (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProtocols.html)

    作文 (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html%23//apple_ref/doc/uid/TP40002974-CH6-SW15)

    消息转发(特别是转发和多 遗产) (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html)

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2023-04-02
      • 2018-03-23
      相关资源
      最近更新 更多