美文网首页
一个实例对象调用方法的调用过程

一个实例对象调用方法的调用过程

作者: _一叶孤帆 | 来源:发表于2021-08-27 09:46 被阅读0次

一个实例对象调用方法的调用过程

  1. 编译 -> 变成 objc_msgSend(id,SEL,...)
  2. 根据示例对象的 isa 指针,找到该对象的 Class
  3. 在 Class 中根据 SEL 方法名寻找函数实现 IMP

寻找过程

  1. 先在当前类的 cache 中查找
  2. 如果 cache 中没找到,就去当前类的 methodLists 列表中查找,最后根据 super class 找到父类
  3. 在父类的 methhodLists 中查找,直到找到 NSObject 为止,如果找到就根据找到的 IMP 去执行,
  4. 如果没找到就去执行消息转发流程

为什么先去找 cache

如果每次都去 methodLists 中去查找,效率会很低,所以所有调用过的方法都会以 map 的方式保存在 cache 中,提高查找效率。

相关文章

  • 一个实例对象调用方法的调用过程

    一个实例对象调用方法的调用过程 编译 -> 变成 objc_msgSend(id,SEL,...) 根据示例对象的...

  • 再论静态方法和类方法

    实例对象可以调用实例方法、类方法、静态方法 类对象只能调用类方法、静态方法

  • Swift 中的方法声明

    实例方法 类方法 静态方法 实例方法由实例对象进行调用;类方法和静态方法由类对象进行调用

  • 第十五天学习Java(面向对象的多态性)

    2.1子类对象的创建过程 实例化子类对象的过程 调用子类的构造方法中,先调用了父类的构造方法,默认调用的父类的无参...

  • 函数中this指向问题以及this四大绑定原则

    一、 普通调用方式 => window 构造函数调用=> 实例对象,原型对象里面的方法也指向实例对象 对象方法...

  • OC消息发送机制

    OC的方法调用都是通过消息发送这种机制来实现的。当调用一个实例方法或者类方法时,底层实现是实例对象或者类对象调用o...

  • 类中的方法

    1.实例方法的调用方式 实例对象.实例方法() 类对象.实例方法(实例对象) 例如: class Student ...

  • JVM - 方法调用和返回指令

    方法调用指令 以下四条指令用于方法调用: invokevirtual 指令用于调用对象的实例方法,根据对象的实际类...

  • 底层原理:Category

    实例对象的isa指向类对象,当调用对象方法时,通过实例对象的isa找到类对象,最后找到对象方法的实现进行调用,分类...

  • this指向,call,apply,bind的区别

    this指向:①普通函数调用时,this指向window;②构造函数调用时,this指向实例对象③对象方法调用时,...

网友评论

      本文标题:一个实例对象调用方法的调用过程

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