从Objective C中的超类调用子类方法

时间:2011-11-04 10:43:01

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

我原来的问题是here

实际上我需要更多关于这个问题的澄清。

考虑以下情况:

我的项目中有三个班级。说A,B&下进行。

这3个类有一些常用的方法。所以我创建了另一个类(Say D),其中我添加了那些常用方法。

现在,D类是父类,A类,B类和A类。 C是儿童班。即A,B和B类。 C继承D的属性。

我为每个孩子班级准备了三个UIButton。每个子类中的每个按钮都有一些动作。但是按钮的属性如颜色,框架,图像在所有三个类中都是相同的。

因此,我需要为每个子类中的按钮执行以下操作:

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

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

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

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

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

先谢谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

As My Understanding D类应具有设置所有常用属性和操作方法的按钮 。如果你想为每个类提供不同的功能,那么Child类应该负责处理Action。

假设您已将目标self和selector添加到supper类中的按钮。你已经创建了A,B或C的对象。晚餐类(D)中的按钮的目标是self。自我是对象的表示所以自我将指代A类,或B或c的对象。