0

我有一个 A 类和一个 B 类,它是 A 的子类。两者都有以下方法:

-(void)anotherMethod{
    // implementation of A or B
}

-(void)aMethod{
    @try{
        [super aMethod];
    }
    @catch(NSException *e){
    }
    [self anotherMethod];
}

现在:如果我调用A 的调用 B 的实现中包含[instanceOfClassB aMethod]的指令(因为它已被覆盖)而不是 A 的指令。我怎样才能使 A 的实现调用 A 的实现?[self anotherMethod]aMethodanotherMethodaMethodanotherMethod

4

3 回答 3

0

试试这个:

if ([self isKindOfClass:[ClassB class]]) {
    [super anotherMethod];
} else {
    [self anotherMethod];
}
于 2012-12-18T10:48:02.940 回答
0

这应该可以帮助你:这个人和你有同样的问题。

Objective-c:在基类上调用 [self message] 正在调用后代方法

于 2012-12-18T11:09:32.587 回答
0

解决方案是在调用 super 之前(和之后)进行方法调配,以便用超类替换子类实现。它需要“破解”运行时,没错,但我还没有发现比这更简单的东西。它有效。

于 2012-12-19T11:13:25.333 回答