【问题标题】:Calling sub class method from the super class in Objective C从Objective C中的超类调用子类方法
【发布时间】:2011-12-21 22:11:03
【问题描述】:

我的原始问题 ID here

其实我需要更多关于这个问题的说明。

考虑以下场景:

我的项目中有三个类。说 A、B 和 C。

这三个类有一些共同的方法。所以我创建了另一个类(比如 D),我在其中添加了那些常用方法。

现在 D 类是父类,A、B 和 C 类是子类。也就是说,A,B & C 类继承了 D 的属性。

每个子类都有三个 UIButton。每个子类中的每个按钮都有一些动作。但是按钮的颜色、框架、图像等属性在所有三个类中都是相同的。

所以,我需要为每个子类中的按钮做以下事情:

  • 初始化按钮
  • 分配它们
  • 设置框架
  • 设置颜色
  • 设置操作(使用[button addTarget:self action:@selector(touchUpInsideAction:) forControlEvents:UIControlEventTouchUpInside]

除了“设置动作”之外,所有子类(A、B 和 C 类)中的所有内容都相同

现在我的问题是,我可以在 D 类(父类)中创建按钮、它的属性和操作吗,我可以在每个子类(A、B 和 C 类)中编写操作方法的 (touchUpInsideAction:) 实现吗?

这样,我可以减少我在项目中的重复代码。这里我会从父类调用子类的方法touchUpInsideAction:

这是正确的方法还是我应该分别为每个类编写按钮创建和属性?

提前致谢

【问题讨论】:

  • 与其在 D 类中分配动作,为什么不从普通类(例如 D 类)获取按钮并在每个类(例如 A 类)中分配动作?

标签: iphone objective-c subclass superclass function-calls


【解决方案1】:

我的理解 D 类应该有设置所有常用属性和操作方法的按钮 .如果您希望每个类具有不同的功能,则子类应该负责处理 Action。

假设您已将目标自我和选择器添加到晚餐类的按钮。您已经创建了 A、B 或 C 的对象。晚餐类 (D) 中按钮的目标是 self。 Self 是 object 的表示,因此 self 将引用 Class A 或 B 或 c 的 object。

【讨论】:

    【解决方案2】:

    在 D 类中创建一个类方法。在该方法中设置所有按钮属性。 从子类调用类方法说 A。类方法将返回 UIButton 类型的对象。 分配选择器,然后将该对象添加到视图中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 2012-04-04
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      相关资源
      最近更新 更多