为什么只有实例方法找不到会走重定向和消息转发,而类方法只会走消息解析的方法

来源:4-9 转发

嗷嗷嗷嗷嗷嗷

2021-11-28

当我调用一个没有实现的类方法时,会调用resolveClassMethod方法,不会调用 forwardingTargetForSelector 也不会走到methodSignatureForSelector?
而当我调用相同的类的一个没有实现的实例方法时,resolveInstanceMethod  forwardingTargetForSelector   methodSignatureForSelector都会响应
是因为类方法的消息转发流程不一样吗?
写回答

1回答

逆风

2021-12-08

消息转发流程一样。

首先理解清楚实例、类、元类三者关系,而forwardingTargetForSelector、methodSignatureForSelector都是实例方法。

要解决这个问题,可以有两种方案:

1.像resolveClassMethod一样,提供forwardingTargetForSelector、methodSignatureForSelector对应的类方法。

2.让元类实现forwardingTargetForSelector、methodSignatureForSelector方法,例如:

//img.mukewang.com/szimg/61b0b6b70962d68817081068.jpg



0
0

面试跳槽提升必备 全面解析iOS中的Runtime机制

高薪职位,复杂业务需求,高性能APP,Runtime技术不可不学。

275 学习 · 48 问题

查看课程