@interface A : NSObject
- (void) tmp;
- (void) foo;
@end
@implementation A
- (void) tmp {
[self foo];
}
- (void) foo {
NSLog(@"A");
}
@end
派生类
@interface B : A
- (void) foo;
@end
@implementation B
- (void) foo {
NSLog(@"B");
}
@end
代码
B * b = [[B alloc] init];
[b tmp]; // -> writes out B
有没有办法实现 A,所以在 A 类的 [self tmp] 中调用 [self foo] 会导致调用 A:foo 而不是 B:foo
(所以调用 [b foo] == @"B" 和调用 [b tmp] == @"A" 之后的输出)
喜欢
@implementation A
- (void) tmp {
[ALWAYS_CALL_ON_A foo];
}