iOS消息转发
来源:互联网 发布:vmware mac os x 优化 编辑:程序博客网 时间:2024/05/16 06:41
消息转发
当向someObject发送某消息,找不到方法事,会执行如下步骤:
1.动态方法解析 向当前类发送 resolveInstanceMethod: 信号,检查是否动态向该类添加了方法。
2.快速消息转发 检查该类是否实现了 forwardingTargetForSelector: 方法,若实现了则调用这个方法。若该方法返回值对象非nil或非self,则向该返回对象重新发送消息。
3.标准消息转发 runtime发送methodSignatureForSelector:消息获取Selector对应的方法签名。返回值非空则通过forwardInvocation:转发消息,返回值为空则向当前对象发送doesNotRecognizeSelector:消息,程序崩溃退出。
因此,我们可以利用上述过程中的2、3两种方式来完成消息转发。
快速消息转发
快速消息转发的实现方法很简单,只需要重写
- (id)forwardingTargetForSelector:(SEL)aSelector
标准消息转发
标准消息转发需要重写
methodSignatureForSelector:forwardInvocation:
两种消息转发方式的比较
- 快速消息转发:简单、快速、但仅能转发给一个对象
- 标准消息转发:稍复杂、较慢、但转发操作实现可控,可以实现多对象转发
未完待续。。。。
0 0
- IOS消息转发机制
- iOS消息转发机制
- iOS runtime 消息转发
- ios消息转发机制
- IOS 消息转发机制
- iOS消息转发机制
- iOS消息转发机制
- iOS 消息转发相关
- iOS消息转发
- ios 消息转发机制
- ios-消息转发机制
- Ios的消息转发机制
- iOS runtime 之消息转发
- iOS消息转发机制详解
- IOS消息传递转发机制
- iOS的消息转发机制
- ios使用消息转发实现撤销操作
- iOS 实现消息转发和委托
- UVa Master-Mind Hints(猜数字+计数)
- HIT 2662 Pieces Assignment
- Linux普通用户下进入root方式
- MPI学习笔记及心得(持续更新)
- 安装docker-compose
- iOS消息转发
- 原生JavaScript中动画与特效的实现原理
- FZU2088-最长队名
- POJ 2318 叉积 + 枚举
- 大整数模拟加(字符串)
- RESTful服务最佳实践——(十一)
- 关于安卓导航栏
- svm随机次梯度下降算法-pegasos
- 最大公约数和真分数