Objective-C: preferred way to retrieve the superclass of a Class instance

3 Solutions Collect From Internet About “Objective-C: preferred way to retrieve the superclass of a Class instance”

Well, the docs on class_getSuperclass() say this:

You should usually use NSObject‘s superclass method instead of this

So, I’d go with door #1.

The accepted answer is technically correct (yes, that’s what the docs say), and yet it’s an incorrect answer.

[* superclass] only exists for objects that are subclasses of

Yes, that’s most of the classes you use day to day.

However … there are many classes you might encounter which are not NSObject subclasses.

Easy example: if you iterate over “all loaded classes” (e.g. using objc_getClassList), then many of the returned classes will crash your app if you use the [Class superclass] method.

I am positive they are absolutely identical, meaning that NSObject‘s superclass is implemented via class_getSuperclass. I am not sure, but I’d bet a beer on it.