Objective c 为什么[super class]和[self class]会产生相同的结果?
只有Objective c 为什么[super class]和[self class]会产生相同的结果?,objective-c,Objective C,只有[self superclass]生成实际的超类 -(NSString *) nibName { PO([self class]); PO([super class]); PO([self superclass]); 自我和超是同一个对象。super所做的唯一事情就是控制调用方法的哪个实现。由于您的类和超类都使用NSObject的-class实现,因此在这两种情况下都会调用相同的方法。使用super发送消息与将消息发送到self相同,但显式使用超类的方法实现。但是您
[self superclass]
生成实际的超类
-(NSString *) nibName
{
PO([self class]);
PO([super class]);
PO([self superclass]);
自我和超是同一个对象。super所做的唯一事情就是控制调用方法的哪个实现。由于您的类和超类都使用NSObject的-class实现,因此在这两种情况下都会调用相同的方法。使用
super
发送消息与将消息发送到self
相同,但显式使用超类的方法实现。但是您的类本身可能没有实现-class
方法,因此您已经从超类继承了-class
的实现
事实上,您可能继承了NSObject
对-class
的实现(即使NSObject
不是直接的超类;-class
不是经常被重写的方法)。默认实现只返回对象的isa
指针的内容,告诉您它是什么Class
换句话说,重要的是要认识到调用
super
并不能将对象完全转换为其超类的实例;它只运行该方法的超类代码。如果代码中有任何内省,它仍然会将对象视为它最初作为的任何类的实例 我不知道Obj-C,但闻起来也像是虚拟的方法:啊,11分钟太慢了!这就是我在iPhone上回答问题的结果。好的第一个答案。:)
[self class]: BGImageForBizs
[super class]: BGImageForBizs
[self superclass]: BGUIImageWithActivityIndicator