相信在APP开发中我们多数使用的self,但是在面试的时候,会经常问到class,superclass,super这些区别
解释 class,superClass,super
- class:获取当前方法调用的类
- superclass:获取当前调用的父类
- super:是一个编译指示器,就是给编译器看的,不是一个指针
- 本质:只要编译器看到super这个标志,就会让当前对象去调用父类的方法,本质还是当前对象在调用
例子
一个person类,有一个test方法
#import <Foundation/Foundation.h>
@interface Person : NSObject
- (void)test;
@end
persond的子类SubPerson 实现test方法
@implementation SubPerson
- (void)test {
NSLog(@"%@--%@--%@--%@",[self class],[self superclass],[super class],[super superclass]);
// 打印结果:SubPerson Person SubPerson Person
// [super class]:解释 super是指的当前对象调用这个方法
//当前对象就是SubPerson -> self
}
@end