我想知道以下两种方法中哪一种是检索Class
变量超类的正确或首选方法:
Class getSuperclass(Class cls) { return [cls superclass]; }
Class getSuperclass(Class cls) { return class_getSuperclass(cls); }
我想知道以下两种方法中哪一种是检索Class
变量超类的正确或首选方法:
Class getSuperclass(Class cls) { return [cls superclass]; }
Class getSuperclass(Class cls) { return class_getSuperclass(cls); }
接受的答案在技术上是正确的(是的,这就是文档所说的),但它是一个不正确的答案。
[* superclass]只存在于作为 NSObject 子类的对象。
是的,这是您日常使用的大部分课程。
但是......您可能会遇到许多不是NSObject 子类的类。
简单的例子:如果你遍历“所有加载的类”(例如使用 objc_getClassList),那么如果你使用 [Class superclass] 方法,许多返回的类将会使你的应用程序崩溃。
我很肯定它们是绝对相同的,这意味着NSObject
'ssuperclass
是通过class_getSuperclass
. 我不确定,但我会赌上一杯啤酒。