Objective-C Runtime

来源:互联网 发布:阿里云vps硬盘io 2017 编辑:程序博客网 时间:2024/05/09 18:20

Objective-C 中给一个对象发送消息会经过以下几个步骤:

在对象类的 dispatch table 中尝试找到该消息。如果找到了,跳到相应的函数IMP去执行实现代码;
如果没有找到,Runtime 会发送 +resolveInstanceMethod: 或者 +resolveClassMethod: 尝试去 resolve 这个消息;
如果 resolve 方法返回 NO,Runtime 就发送 -forwardingTargetForSelector:允许你把这个消息转发给另一个对象;
如果没有新的目标对象返回, Runtime 就会发送 -methodSignatureForSelector:和 -forwardInvocation: 消息。你可以发送 -invokeWithTarget: 消息来手动转发消息或者发送 -doesNotRecognizeSelector: 抛出异常。

1 0
原创粉丝点击