美文网首页
类中的表

类中的表

作者: 不要虚度美好的时光 | 来源:发表于2016-09-14 19:47 被阅读0次

    在每个类中都有一个Dispatch Table,这个Dispatch Table本质是将类中的SEL和IMP(可以理解为函数指针)进行对应。而我们的Method Swizzling就是对这个table进行了操作,让SEL对应另一个IMP。

    ==================

    对象如何找到对应的正确方法去调用:

    对象方法保存在类中,类方法保存在元类中;

    每一个类都有一个方法列表:method list;

    (1) 明确去哪个类中调用方法;通过对象的isa指针,这个指针指向的就是这个实例对象的类对象;

    (2) 根据传入的方法编号,也就是SEL编号,去方法列表中查找到对应的方法;

    为什么苹果会使用方法编号?因为操作数字比操作字符串会快,那么传递方法的时候传递数字编号会提高效率;

    (3) 根据方法编号找到了方法名(函数入口),然后根据这个方法名去内存中的方法区找到这个函数的实现!!!

    相关文章

      网友评论

          本文标题:类中的表

          本文链接:https://www.haomeiwen.com/subject/bxovettx.html