简述下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学习笔记(十九)——对象方法和类方法的相互调用