SIL与方法派发——总结

swift 的方法派发受方法的声明位置 和 @objcdynamicfinal 等关键字的影响

类型 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 协议的方法

致读者:这几篇下来看的可能有些不明所有,建议参考其他文章一起看,有了大致的了解后,再来复习一遍,下面有几篇写的比较好的文章