super:是编译器指示符,仅仅是一个标志,并不是指针,仅仅是标志的当前对象去调用父类的方法,本质还是当前对象调用
class:获取方法调用者的类对象
例如1、:创建一个类Person
再创建一个字类SonPerson继承自Person
在SonPerson
中输出:
NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);
结果:
// SonPerson Person SonPerson Person
如2、在子类SonPerson中调用父类中的方法+ (void)text
在子类中需要这样调用[super text];
在父类中实现
+ (void)text
{
// super:是编译器指示符,仅仅是一个标志,并不是指针,仅仅是标志的当前对象去调用父类的方法,本质还是当前对象调用
// class:获取方法调用者的类对象
NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);
}
输出结果如下
// SonPerson Person SonPerson Person
注意:
super:是编译器指示符,仅仅是一个标志,并不是指针,仅仅是标志的当前对象去调用父类的方法,本质还是当前对象调用
super:并不是让父类对象调用方法,调用者还是本身
class:获取方法调用者的类
superclass:获取方法调用者的父类