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: 抛出异常。
在对象类的 dispatch table 中尝试找到该消息。如果找到了,跳到相应的函数IMP去执行实现代码;
如果没有找到,Runtime 会发送 +resolveInstanceMethod: 或者 +resolveClassMethod: 尝试去 resolve 这个消息;
如果 resolve 方法返回 NO,Runtime 就发送 -forwardingTargetForSelector:允许你把这个消息转发给另一个对象;
如果没有新的目标对象返回, Runtime 就会发送 -methodSignatureForSelector:和 -forwardInvocation: 消息。你可以发送 -invokeWithTarget: 消息来手动转发消息或者发送 -doesNotRecognizeSelector: 抛出异常。
相关文章推荐
- 一分钟看懂NSAttributedString
- ZigBee Device Object Bind Request
- ZigBee Device Object End Device Bind Request--协调器与终端之间的绑定
- 021: class, objects and instance: 特殊方法
- Android 实现可以暂停旋转的ObjectAnmition动画
- objective c, protocol
- OC(Objective-C)中的KVC
- 终极基类Object
- 《Effictive Objective-C 2.0》读书摘要(下)
- 《Effictive Objective-C 2.0》读书摘要(上)
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- Objective-C基础笔记(2)@property和@synthesize
- 谈Objective-C Block的实现
- object detect
- .NET平台开源项目速览(2)Compare .NET Objects对象比较组件
- [Objective-C] Block实现回调和简单的学习思考
- Atitit. Object-c语言 的新的特性 attilax总结
- Atitit. Object-c语言 的新的特性 attilax总结
- Atitit. Object-c语言 的新的特性 attilax总结
- 第八章 Core Animation1 8.1 Core Animation入门 Core Animation(或者叫Quartz Core)是一个Objective-C类库,内建于IOS媒体层中