SIL与方法派发——总结
swift 的方法派发受方法的声明位置 和 @objc、dynamic、final 等关键字的影响
| 类型 | direct(直接派发) | table(方法表派发) | message(消息派发) |
|---|---|---|---|
| Value Type | All Methods(所有方法) | N/A | N/A |
| Class/NSObject | 1. extesion 中没有修饰符的方法。2. 使用 final 修饰的方法(受优先级影响) |
类中初始声明的方法(即使有 @objc 或 dynamic 修饰) |
1. 所有 @objc dynamic 修饰的方法。2. extension 中使用 @objc 修饰的方法 |
| protocol | 1. extension 中声明的方法 2. struct 实现的协议方法 3. class 通过 extension 遵循协议的方法 |
class 声明范围内遵循的协议方法 | 带有 @objc 协议的方法 |
致读者:这几篇下来看的可能有些不明所有,建议参考其他文章一起看,有了大致的了解后,再来复习一遍,下面有几篇写的比较好的文章