一、慢速查找流程(递归流程):lookupimp lookupimpforward
1、自己的Methodist sel=imp
2、父类->NSObject->nil->跳出来
二分查找法
二、快速查找流程
pragma clang diagnostic push
// 让编译器忽略错误
pragma clang diagnostic ignored "-Wundeclared-selector"
LGStudent *student = [[LGStudent alloc] init];
// 对象方法
[student sayHello];
[student sayNB];
// [student sayMaster];
[LGStudent performSelector:@selector(sayEasy)];
pragma clang diagnostic pop
1、方法没有 慢速递归查找 cache查找 ->nil
2、崩溃
3、返回一个imp trycache
4、共享缓存再找一遍lookupimpforward
5、系统发送resove_sel
1: 苹果给的一次机会
2: 全局 所有方法找不到 我们是不是都能监听
3: lg_model_traffic -> lg_home_didClickDetail -> pop home -> 后台发送消息 didClickDetail -> 监控 改BUG
4: runtime ->
5: aop - oop
6: 对象分工是非常明确 - 冗余代码 -> 提取 -> 公共的类 (强依赖 - 强耦合)
7: 无侵入 - 动态 注入代码 - 切入的方法 切入的类
8: 性能消耗 + 苹果写转发流程就没有意义
9: 消息转发流程 : 快速 + 慢速转发