我想知道以下两个方法中哪一个是正确的或首选的方法来检索Class
变量的超类:
Class getSuperclass(Class cls) { return [cls superclass]; }
Class getSuperclass(Class cls) { return class_getSuperclass(cls); }
答案 0 :(得分:24)
答案 1 :(得分:4)
接受的答案在技术上是正确的(是的,这就是文档所说的),但这是一个错误的答案。
[* superclass] 仅对于子类的对象存在 NSObject的。
是的,这是你日常使用的大部分课程。
但是...... 可能遇到的很多类不是 NSObject子类。
简单示例:如果您遍历“所有已加载的类”(例如,使用objc_getClassList),那么如果您使用[Class超类]方法,则许多返回的类将崩溃您的应用程序。
答案 2 :(得分:2)
我很肯定他们完全相同,这意味着NSObject
的{{1}}是通过superclass
实现的。我不确定,但我打算喝啤酒。