gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:23:40 24 4
gpt4 key购买 nike

-(NSString *) nibName
{
PO([self class]);
PO([super class]);
PO([self superclass]);

只有 [self superclass] 产生实际的父类(super class)。

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

最佳答案

使用 super 发送消息与将消息发送到 self 相同,但显式使用父类(super class)的方法实现。但是您的类本身可能没有实现 -class 方法,因此您已经从父类(super class)继承了 -class 的实现。

事实上,您可能正在继承 NSObject-class 实现(即使 NSObject 不是您的直接父类(super class); -class 不是经常被覆盖的方法)。而默认实现只是返回对象的isa 指针的内容,告诉你它是什么Class

换句话说,重要的是要认识到调用 super 不会将您的对象完全转换为其父类(super class)的实例;它只是运行该方法的父类(super class)代码。如果该代码中有任何内省(introspection),它仍然会将您的对象视为它开始时的任何类的实例。

关于objective-c - 为什么 [super class] 和 [self class] 产生相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14742607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com