unrecognized selector-消息转发

http://www.cocoachina.com/ios/20150604/12013.html

文章提到的测试demohttps://github.com/zhen7216/MessageForwarding/tree/master

消息转发的应用:from:
作者:王勇
感谢楼上的回答。最近刚刚结束一个项目,也碰巧遇到了相关的实际应用,这里就强行自问自答一波。由于我负责的项目需要支持到iOS7,而众所周知,目前主流应用都是运行在iOS9+环境以下,因此,编码时不得不考虑到系统兼容性的问题。然而题主首次面对多系统适配,缺乏相关经验,所以也就没有考虑到:某些新出来的方法仅支持iOS8+or9+or10+系统,而在iOS7系统下无法使用。这也就造成了一个问题——使用搭载iOS7的机型跑项目的时候,莫名地会崩溃。而调试发现,崩溃的原因正式那个经典的"Unrecognized selector send to instance ********”首先想到的解决方案就是,将出现这些问题的地方统统替换成旧的、低版本系统能够支持的方法。然而项目异常庞大,光是替换都得花费一个小时。非常不划算。这时候,消息转发就闪亮登场了!我们只需要通过全局断点,定位到低系统不能响应的方法。将方法名提取出来,在resolveInstanceMethod方法中拦截该方法名,并将它的实现指派给另一个方法,即可。这样,就做到了,高版本系统响应高版本方法,低版本系统执行低版本方法的目的。省时省事!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,797评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,318评论 4 61
  • 1月7日 星期日 多云 第108篇 儿子今天学会了平衡车,我是自不量力,被狠狠的摔了下来,此刻正...
    李少聪妈妈阅读 1,417评论 0 0
  • 一、学习要求 书籍参考章节: 第3.8章 知识点: break语句的用法 continue语句的用法 二、参考知识...
    我是老薛阅读 3,290评论 0 0
  • 晚上匆忙地劳作,终于把一个凌乱不堪的家整理干净了,但面对镜子里一个蓬头的自己,真是说不出来的不喜欢。忽然很想去梳个...
    岁月静好liu阅读 2,744评论 0 1