This is an excerpt from Objective-C runtime programming guide:
When a new object is created, memory is allocated for it and its instance variables are initialized. The first among variable objects is a pointer to its class structure. This pointer, called isa, gives the object access to its class and through the class to all classes to which it inherits.
isa is declared NSObjectas follows:
Class isa;
In turn, Classis nothing more than a pointer to a structure
typedef struct objc_class *Class;
Now look at this structure:
struct objc_class {
Class isa;
#if !__OBJC2__
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
#endif
}
We see that the pointer to the superclass (like all other members of the structure, except the other) isa is not available in the latest version of Objective-C.
, , , super_class ? ? ? ? - ?