您的位置:首页 > 移动开发 > Objective-C

Objective-C Runtime

2016-02-21 15:05 330 查看
Objective-C 中给一个对象发送消息会经过以下几个步骤:

在对象类的 dispatch table 中尝试找到该消息。如果找到了,跳到相应的函数IMP去执行实现代码;

如果没有找到,Runtime 会发送 +resolveInstanceMethod: 或者 +resolveClassMethod: 尝试去 resolve 这个消息;

如果 resolve 方法返回 NO,Runtime 就发送 -forwardingTargetForSelector:允许你把这个消息转发给另一个对象;

如果没有新的目标对象返回, Runtime 就会发送 -methodSignatureForSelector:和 -forwardInvocation: 消息。你可以发送 -invokeWithTarget: 消息来手动转发消息或者发送 -doesNotRecognizeSelector: 抛出异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: