Runtime就是将面向对象开发转换为面向过程
(一)instance,classObject,metaClass
对象的isa指针指向自己的元类(metaClass);对象的superClass指向自己的父类;
(二)消息发送
1.根据实例对象的isa指针找到类对象。
2.类对象的消息解析:
查看类对象的cache是否存在该方法。如果存在,直接调用;如果不存在,进入下一步。
查看类对象class_rw_t是否有该方法。如果存在,调用并添加到cache;如果不存在,进入下一步。
查看父类的cache是否存在该方法。如果存在,调用并添加到消息接收者的cache;如果不存在,进入下一步。
查看父类class_rw_t是否有该方法。如果存在,调用并添加到消息接收者cache;如果不存在,进入下一步。
以此类推,直到找到根类。
如果在3、4及其它父类中找到该方法,会将其添加到消息接收者的cache,即 receiver 的cache。