NSLog(@"%@",超级)崩溃

Cha*_* SP 2 iphone cocoa cocoa-touch objective-c

我在一个方法(任何方法)中使用了NSLog(@"%@",super ),它正在崩溃....为什么?如何打印超级内容?

更新 :

currentclassname : superClassName
{
}
Run Code Online (Sandbox Code Playgroud)

如果我使用NSLog(@"%@",[超级描述]); 它是打印"<currentclassname: 0x3db7230>"而不是superClassName ...它应该打印superClassName权限.

提前致谢,

Geo*_*che 5

遇到关键字 super并对其进行方法调用时,编译器会生成不同的调用 - objc_msgSendSuper*()而不是通常的调用objc_msgSend*().

objc_msgSendSuper*()调用获取类型的参数objc_super*而不是objc_object*:

struct objc_super {
   id receiver;
   Class class;
};
Run Code Online (Sandbox Code Playgroud)

因此,objc_super*值不是特殊实例,它们必须与特殊objc_msgSendSuper*()函数一起使用.

因此,正如Alex所说,只是-description直接调用super- 它的值在上下文之外是没有意义的,除非你专门用它来运行函数objc_msgSendSuper().