次のコードを検討してください。
`@interface Parent : NSObject
- (void)whoAmI;
@end
@implementation Parent
- (void)whoAmI
{
NSLog(@"PARENT CALLED");
}
@end
@interface Child : Parent
- (void)test;
@end
@implementation Child
- (void)whoAmI
{
NSLog(@"CHILD CALLED");
}
- (void)test
{
NSLog(@"%@", [super class]);// CHILD!!!! why???
[super performSelector:@selector(whoAmI)];// "CHILD CALLED" why???
}
@end
`
メソッドを呼び出すtest
と、親クラスが出力され、親whoAmI
メソッドが実行されることを期待しています。しかし、驚くべきことに、どちらの場合も派生クラスが呼び出されます。なぜそれが起こるのか、そして私performSelector:
は基本クラスでどのように私を説明できますか?