Why does "[self class] == [super class]"?

Viewed 1309

I expected [super class] to return the superclass's class, however I found, using this code that it returns this class's class.

Code

NSLogObject([self class]);
NSLogObject([super class]);
NSLogObject([self superclass]);
NSLogBool([self class] == [super class]);

Output

[self class]: MainMenuScene
[super class]: MainMenuScene
[self superclass]: CCScene
[self class] == [super class]:[YES]

Can somebody explain why this happens please?. I expect it to return the same value as [self superclass].

Macros:
-------
#define NSLogBool(i)   NSLog(@"%s:[%@]", #i, (i) ? @"YES" : @"NO")
#define NSLogObject(o) NSLog(@"%s:[%@]", #o, o)
3 Answers
Related