我希望[超类]返回超类的类,但是我发现,使用这个代码它会返回这个类的类.
码
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]相同.