MKr*_*ert 14 objective-c objective-c-runtime
我想知道以下两个方法中哪一个是正确的或首选的方法来检索Class
变量的超类:
Class getSuperclass(Class cls) { return [cls superclass]; }
Class getSuperclass(Class cls) { return class_getSuperclass(cls); }
接受的答案在技术上是正确的(是的,这就是文档所说的),但它是一个错误的答案。
[* superclass]仅适用于 NSObject 子类的对象。
是的,这是您日常使用的大部分课程。
但是...您可能会遇到许多不是NSObject 子类的类。
简单的例子:如果您迭代“所有加载的类”(例如使用 objc_getClassList),那么如果您使用 [Class superclass] 方法,许多返回的类将使您的应用程序崩溃。