我有SAGridMenu
类正在实现方法align
。我也有类SARadioMenu
,它正在实现与触摸相关的例程。他们两人都做得很好。
SAGridMenu: CCMenu
SARadioMenu: CCMenu
我现在想要的是创建组合这两个类的类 - SARadioGridMenu
。 Objective C中没有多重继承,所以我不能拥有从两者继承的类。结合它们的最有效方法是什么?
更新(澄清):
两个子类都使用ivars,因此类别不是最佳选择。
基本上我有两段代码。 1.对齐和2.触摸相关。最终目标是拥有3个没有冗余的类 - SAGridMenu, SARadioMenu and SAGridRadioMenu
。作为临时解决方案,我从SAGridRadioMenu
继承了SARadioMenu
并将align
代码复制到其中。希望找到更好的解决方案。
答案 0 :(得分:0)
各种选项,因为它们都继承自CCMenu
:
CCMenu
中。 CCMenu
上的类别中,即实现类似'@interface CCMenu(align)`的内容。这可能就是我要做的事。添加一个继承自CCMenu
的中间类,它是两个类的超类,类似
SAGridMenu : CCMenuPlusAlign : CCMenu
SARadioMenu : CCMenuPlusAlign : CCMenu
答案 1 :(得分:0)
根据方法的具体细节,您可以将方法align
和/或触摸相关例程实现为类方法。类方法可以使用CCMenu
或具有必要的ivars作为参数的协议。例如,SARadioGridMenu
会从SARadioMenu
继承,并会调用[SAGridMenu align:self]
。 SAGridMenu
也会调用[SAGridMenu align:self]
来调用对齐方法。
答案 2 :(得分:0)
您可以在第三课中使用作文 SAGridRadioMenu 赞:
@interface SAGridRadioMenu : CCMenu {
SARadioMenu * _radioMenu;
SAGridMenu * _gridMenu;
}
//You can also create properties here
通过这种方式,您的 SARadioMenu,SAGridMenu 类都可以重复使用,无需复制代码(无冗余),第三类就可以使用了。
希望能解决您的问题。