NSObject类声明了一个成员变量Class isa,指向创建对象的类结构。
所有的类都继承字NSObject,所有都具有这个成员变量isa,另外还具有一个指向父类结构的指针。
类中的方法以selector索引,selector的类型是SEL。专门有一个表用来在方法名和selector之间映射。
在编译的时候,只要有方法的调用,编译器都会通过selector在查找方法。
所以,
[myObject addObject:yourObject];
变成了 (假定addObject的selector为methodSelector)
objc_msgSend(myObject, methodSelector, yourObject);
objc_msgSend函数将使用myObject的isa指针来找到它的类结构并在类结构中查找methodSelector对应的方法。
如果没找到,则使用指向父类的指针在父类结构中查找。
如果直到根类都没有找到,则抛出一个异常。