OC中的方法查找机制

场景:类A继承自类B,类B继承自类C,我想调用类A的fun方法,但A未实现该方法,类B也未实现fun方法,但是他实现了forwardInvocation:方法处理了当fun被调用时的逻辑,类C实现了fun方法,但是是私有的(强调私有是为了说明本场景只有C实现了fun方法,因为继承关系,若公有,那A和B也会有该方法的实现)。

当A类的实例接收到fun消息时,查找逻辑为:

1. 在A类中查找fun方法,未找到。

2. 检查A类中是否实现了forwardInvocation:方法,未找到。

3. 继续在B类中查找fun方法,未找到。

4. 检查B类中是否实现了forwardInvocation:方法,找到了。

5. 在B类中执行forwardInvocation:方法中的逻辑(可以是自定义逻辑或继续转发消息)。

不再继续往C类中查找了。

总结一下,查找方法的逻辑为:

在本类中查找方法,找到则执行,否则查找是否实现了forwardInvocation:方法,找到则执行;否则继续在父类中执行上述逻辑。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容