Objective-C でゲッターをオーバーライドしようとしています。私は2つのクラスを持っています、First
そしてSecond
、のように:
First.h
:
@interface First : MashapeResponse {
NSString* message;
}
@property(readwrite, retain) NSString* message;
@end
First.m
:
#import "First.h"
@implementation First
@synthesize message;
@end
Second.h
:
#import "First.h"
@interface Second : First
-(NSString*) message;
@end
Second.m
:
#import "Second.h"
@implementation Second
-(NSString*) message {
return [NSString stringWithFormat:@"%@%@", @"Message is ", message];
}
@end
次のコードを実行しようとしていますが、オーバーライドされたメソッドSecond
が実行されないようです。
First* first = [[First alloc] init];
[first setMessage:@"hello"];
NSLog(@"%@", [first message]); // "hello" expected
Second* second = (Second*) first;
NSLog(@"%@", [second message]); // "Message is hello" expected, but it's still "hello"