@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の[selftmp]内で[selffoo]を呼び出すと、B:fooではなくA:fooが呼び出されます。
(したがって、[b foo] == @ "B"を呼び出した後、および[b tmp] == @ "A"を呼び出した後の出力)
のようなsmth
@implementation A
- (void) tmp {
[ALWAYS_CALL_ON_A foo];
}