ios – 为什么“[self class] == [super class]”?

前端之家收集整理的这篇文章主要介绍了ios – 为什么“[self 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相关文章