objective-c – 为什么[super class]和[self class]产生相同的结果?

前端之家收集整理的这篇文章主要介绍了objective-c – 为什么[super class]和[self class]产生相同的结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
-(NSString *) nibName
{
    PO([self class]);
    PO([super class]);
    PO([self superclass]);

只有[self superclass]才能产生实际的超类.

[self class]: BGImageForBizs
[super class]: BGImageForBizs
[self superclass]: BGUIImageWithActivityIndicator

解决方法

使用super发送消息与将其发送给self相同,但显式地使用超类“方法实现.但是你的类可能不会实现-class方法本身,所以你已经从你的超类继承了-class的实现.

实际上,你可能继承NSObject的-class实现(即使NSObject不是你的直接超类,-class也不是经常被覆盖的方法).而默认的实现只是返回对象的isa指针的内容,告诉你它是什么类.

换句话说,重要的是要认识到,调用super并不能将你的对象完全转换为超类的实例;它只是为该方法运行超类’代码.如果在该代码中有内省的话,它仍然将你的对象看作是开始的任何类的实例.

猜你在找的C&C++相关文章