这可能是以前问过的,但我不知道要搜索什么。这是我现在的层次结构:NSObject > FirstSubclass > SecondSubclass。但是我将在我的应用程序中实现一个新功能,当满足某个条件时,它需要更改 FirstSubclass 中的一些细节。所以实际上我需要一个介于 FirstSubclass 和 SecondSubclass 之间的子类来覆盖 FirstSubclass 的行为。我不需要覆盖 SecondSubclass 本身中的东西,但我需要super
对我拥有的所有不同的 SecondSubclass 子类进行某种处理。我可以将 FirstSubclass 中的所有内容更改为使用“if then 语句”,但首先我想确定是否没有其他选择。我需要一个“协议”吗?喜欢在SecondSubclass : FirstSubclasslass <WeirdThingIDontKnow>
?
问问题
63 次
2 回答
0
听起来你需要鸭式打字。respondsToSelector
在目标 c 中,它可以通过使用performSelector
或来完成NSInvocation
。这可以大大简化类层次结构。
于 2010-07-21T18:51:40.133 回答
0
创建一个从 FirstSubclass 派生的新对象(比如 InBetweenSubClass)并覆盖 FirstSubclass 的必要方法。然后将 SecondSubclass 更改为从 InBetweenSubClass 而不是 FirstSubclass 派生。
在 Objective-C 中没有“覆盖”等价物,您只需实现一个具有相同签名的方法,并且基类的该方法被覆盖。您也可以这样做,如果满足特殊条件,则使用新方法,否则使用基(超)类的方法:
-(void) test
{
if (self.specialcondition)
{
[self newTest];
}
else
{
[super test];
}
}
于 2010-07-21T18:52:58.977 回答