我希望 [super class]
返回父类(super class)的类,但是我发现,使用此代码它返回此类的类。
代码
NSLogObject([self class]);
NSLogObject([super class]);
NSLogObject([self superclass]);
NSLogBool([self class] == [super class]);
输出
[self class]: MainMenuScene
[super class]: MainMenuScene
[self superclass]: CCScene
[self class] == [super class]:[YES]
有人能解释一下为什么会这样吗?我希望它返回与 [self superclass]
相同的值。
Macros: ------- #define NSLogBool(i) NSLog(@"%s:[%@]", #i, (i) ? @"YES" : @"NO") #define NSLogObject(o) NSLog(@"%s:[%@]", #o, o)
最佳答案
[super class]
在当前实例(即 self
)上调用 super
方法。如果 self 有一个覆盖版本,那么它会被调用并且看起来会有所不同。由于您没有覆盖它,因此调用 [self class]
与调用 [super class]
相同。
关于ios - 为什么 "[self class] == [super class]"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827720/