采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,你好,我认为返回消息转发第一步函数,不管返回yes或者no,只要你动态添加了方法,方法列表更新了之后,系统会自动去重新进行消息传递机制,重新进行方法查找。而且返回yes和no走的过程应该是一样,这也和后面输出结果一样,形成了印证。你认为我理解的对吗?
动态添加方法在系统第一次回调resolveInstanceMethod的时候我们一般先注册方法,然后返回yes 系统会重新查找方法。这一步骤返回no的话 系统会进行转发走forwardTarget回调来寻求转发。如果这一步骤没有处理 那么系统会进行最后一次处理进行foralwardInvocation
老师,你看视频中你在添加了class_addMethod(self, @selector(test), testImp, "v@:");这行代码后,即使resolveInstanceMethod返回NO,系统也没有走forwardTarget方法,因为没有日志打印输出forwardTarget的日志啊,我自己做了测试,的确没有打印。
实在抱歉,如果动态添加类方法怎么做呢?resolveClassMethod返回yes或者no都会崩溃,且不会往视频中说的方法往下走
把self改成[self superClass]
登录后可查看更多问答,登录/注册
从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系
1.3k 11
1.9k 9
1.2k 9
1.0k 8
971 8