简述下Objective-C中调用方法的过程(runtime)

Posted tiankongzhicheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述下Objective-C中调用方法的过程(runtime)相关的知识,希望对你有一定的参考价值。

  • Objective-C是动态语言,每个方法在运行时会被动态转为消息发送,即:objc_msgSend(receiver, selector),整个过程介绍如下:
    • objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类
    • 然后在该类中的方法列表以及其父类方法列表中寻找方法运行
    • 如果,在最顶层的父类(一般也就NSObject)中依然找不到相应的方法时,程序在运行时会挂掉并抛出异常unrecognized selector sent to XXX
    • 但是在这之前,objc的运行时会给出三次拯救程序崩溃的机会,这三次拯救程序奔溃的说明见问题《什么时候会报unrecognized selector的异常》中的说明
  • 补充说明:Runtime 铸就了Objective-C 是动态语言的特性,使得C语言具备了面向对象的特性,在程序运行期创建,检查,修改类、对象及其对应的方法,这些操作都可以使用runtime中的对应方法实现。

以上是关于简述下Objective-C中调用方法的过程(runtime)的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C学习笔记(十九)——对象方法和类方法的相互调用

追踪 Objective-C 方法中的 Block 参数对象

简述JDBC中三种Statement对象的作用

深入理解Objective-C:方法缓存

可以在调用实例方法时释放 Objective-C 对象吗?

深入解析 Objective-C 中方法的结构