- 消息转发的一些源码分析
|
|
- 接下来去到方法寻找函数里
|
|
- 查找方法实现的代码
|
|
- Apple没有公开_objc_msgForward的实现源码,_objc_msgForward是一个函数指针(和 IMP 的类型一样),是用于消息转发的:当向一个对象发送一条消息,但它并没有实现的时候,_objc_msgForward会尝试做消息转发。
- _objc_msgForward消息转发做的几件事:
|
|
- 上面前4个方法均是模板方法,开发者可以override,由 runtime 来调用。最常见的实现消息转发:就是重写方法3和4,吞掉一个消息或者代理给其他对象都是没问题的
- 直接调用_objc_msgForward是非常危险的事,如果用不好会直接导致程序Crash,但是如果用得好,能做很多非常酷的事。
- _objc_msgForward隶属 C 语言,有三个参数 :
|
|
|
|