为什么只有实例方法找不到会走重定向和消息转发,而类方法只会走消息解析的方法
来源:4-9 转发
嗷嗷嗷嗷嗷嗷
2021-11-28
当我调用一个没有实现的类方法时,会调用resolveClassMethod方法,不会调用 forwardingTargetForSelector 也不会走到methodSignatureForSelector?
而当我调用相同的类的一个没有实现的实例方法时,resolveInstanceMethod forwardingTargetForSelector methodSignatureForSelector都会响应
是因为类方法的消息转发流程不一样吗?
写回答
1回答
-
逆风
2021-12-08
消息转发流程一样。
首先理解清楚实例、类、元类三者关系,而forwardingTargetForSelector、methodSignatureForSelector都是实例方法。
要解决这个问题,可以有两种方案:
1.像resolveClassMethod一样,提供forwardingTargetForSelector、methodSignatureForSelector对应的类方法。
2.让元类实现forwardingTargetForSelector、methodSignatureForSelector方法,例如:
00
相似问题
