请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

动态添加方法一节中,我的一点疑问

老师,你好,我认为返回消息转发第一步函数,不管返回yes或者no,只要你动态添加了方法,方法列表更新了之后,系统会自动去重新进行消息传递机制,重新进行方法查找。而且返回yes和no走的过程应该是一样,这也和后面输出结果一样,形成了印证。你认为我理解的对吗?

正在回答 回答被采纳积分+3

1回答

于海 2018-10-23 11:41:17

动态添加方法在系统第一次回调resolveInstanceMethod的时候我们一般先注册方法,然后返回yes 系统会重新查找方法。这一步骤返回no的话 系统会进行转发走forwardTarget回调来寻求转发。如果这一步骤没有处理 那么系统会进行最后一次处理进行foralwardInvocation

0 回复 有任何疑惑可以回复我~
  • 提问者 Coder_L #1
    老师,你看视频中你在添加了class_addMethod(self, @selector(test), testImp, "v@:");这行代码后,即使resolveInstanceMethod返回NO,系统也没有走forwardTarget方法,因为没有日志打印输出forwardTarget的日志啊,我自己做了测试,的确没有打印。
    回复 有任何疑惑可以回复我~ 2018-10-29 18:17:53
  • 提问者 Coder_L #2
    实在抱歉,如果动态添加类方法怎么做呢?resolveClassMethod返回yes或者no都会崩溃,且不会往视频中说的方法往下走
    回复 有任何疑惑可以回复我~ 2018-10-29 18:44:35
  • 慕标1906791 回复 提问者 Coder_L #3
    把self改成[self superClass]
    回复 有任何疑惑可以回复我~ 2018-11-20 01:23:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信