0
創建了兩個類A
和B
其中B
小類A
。當嘗試初始化B
時,它調用[super init]
爲什麼超類A
使用孩子的(B
)的執行printMessage
?初始化時爲什麼使用子類的實現?
@implementation A
- (instancetype)init
{
self = [super init];
if (self) {
[self printMessage:@"Foo"];
}
return self;
}
-(void)printMessage:(NSString *)message
{
NSLog(@"From A: %@", message);
}
@end
實現B的(子類A)
@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