【发布时间】:2011-06-02 11:51:35
【问题描述】:
我不知道该怎么说,我找不到答案,因为我无法找到表达我所寻找的词语。 (!)
在Java中,我曾经做过这样的事情(我不记得了):
JPanel myButton = new JPanel("Press me"){
public void add(JComponent component){
//override add method
}
};
但是,我在 Objective-C 中找不到如何做到这一点。我在搜索中发现的是类别和奇怪的 ^{} 符号...
那么,如何在新创建的对象中覆盖方法?
(例如,在新创建的NSString* 中覆盖-(BOOL)isEqual; ?)
如果问题有点含糊,我很抱歉..
编辑:
显然,没有子类化:)
编辑:
如果有人有更好的主意,不妨发布我的问题:
我在 COCOS2D 中有几个 CCTransition,我希望在过渡结束时得到通知。问题是,一旦过渡结束,-(void)finish;方法被调用(它是 CCTransition 类结构的一部分)
我真的很想避免继承 CCTransition 类,并在转换结束时重写完成方法来执行我的逻辑:)
编辑:
-(void)onEnterTransitionDidFinish; ...我不敢相信有这么棒的东西存在,而且我在搜索时没有遇到过......
这意味着,不是继承 CCTransition,而是在我的 CCNode 子类中重写此方法:D!
【问题讨论】:
-
您要覆盖类中的方法还是只覆盖一个对象(类实例)?
-
我要回答使用子类。我不知道其他方式..
-
这在Java中是非常可能和方便的。我认为objective-C更加通用?
-
它可以在运行时完成,你甚至可以根据需要从字符串编译方法,但为什么不使用子类呢?这正是子类的用途。
-
我最终将子类化大约 10 个类.. CCTransitionFadeIn、CCTransitionSlideIn、...等。而且每个人都有自己的逻辑。可维护性/可读性对我来说是一个非常重要的要求。