Созданы два класса A
и B
, где B
подклассы A
. При попытке инициализировать B
он вызывает [super init]
Почему суперкласс A
использует реализацию ребенка (B
) printMessage
?Почему реализация класса child используется при инициализации?
@implementation A
- (instancetype)init
{
self = [super init];
if (self) {
[self printMessage:@"Foo"];
}
return self;
}
-(void)printMessage:(NSString *)message
{
NSLog(@"From A: %@", message);
}
@end
Осуществление B (подклассов)
@implementation B
- (instancetype)init
{
self = [super init];
if (self) {
[self printMessage:@"Bar"];
}
return self;
}
-(void)printMessage:(NSString *)message
{
NSLog(@"From B: %@", message);
}
@end
инициализирована с помощью:
B *b = [[B alloc] init]
Ожидаемые результаты:
From A: Foo
From B: Bar
Фактический выход:
From B: Foo
From B: Bar
Вы не беспокоили чтения руководство по программированию Objective-C у вас. – trojanfoe
@trojanfoe Хороший и конструктивный комментарий там ... – Jonathan
Мне не нужно быть конструктивным вообще. ** Вам нужно искать, прежде чем отправлять бессмысленные вопросы. – trojanfoe