isa指针是所有Objective-C对象都具备的。
它指向类该对象所属的类,在Objective-C中类也是个对象,所以isa指针指向了该对象的类对象。
每个类对象都维护了一个方法调度表,还有一个指向基类的指针,这样的话继承层次就可以被组织起来了,就像个链表一样。
这样一来每个类对象只需要负责持有自己的实例变量即可。
isa存在的意义在于它提供了消息分发机制和Cocoa对象的动态能力。
一个对象的isa的类型是Class,也就是isa是一个类对象类型的指针。
类对象的本质是一个结构体,
里面还有一个isa指针,它指向类对象的元类,元类包含了类的版本、名字、类方法等,所有元类对象最终都指向了NSObject。
里面指向父类对象的指针是super_class。元类对象也是如此,它们的super_class也指向各自原类的父类。