问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ios9.0的系统bug导致的objc_msgSend错误的解决方案

发布网友 发布时间:2023-04-23 02:30

我来回答

1个回答

热心网友 时间:2023-04-27 17:56

看此篇文章之前请先阅读 xcode调试效率 .
ios9.0上遇到一个问题, UITableView 中长按 section ,如果我们的交互中要求弹出menu菜单,那么就会出现如图所示的必现崩溃

1.这个NSDictionary到底是什么?是 UITableView 的数据源吗?
2.如果是数据源是否是多线程导致的呢?( NSDictionary 在多线程下如未处理好极容易崩溃, set 和 get 同时调用的时候,一个对象被 remove 之后野指针了,然后 get 操作会立马导致崩溃)

1.由于工程比较大,建议先写一个demo去做。(大工程的一些配置选项可能导致 lldb 的某些命令无法使用),这一点耗费了我们很大的精力去分析 NSZombie 的 malloc 历史,都没有结果

在工程中拆分出demo之后,由于我们根本没有 NSDictionary ,所以排除了这种情况,但是为什么会有这个问题呢。这个 NSDictionay 又是什么呢?

通过条件断点我们查看最后一次调用的地方,然后打印当前寄存器的值

通过

我们可以去找到rdi,这个返回参数。此时去找这个参数的地址

CFDictionaryCreateMutable 是关键方法,通过它我们知道了如何去分配对象,理想当然,我们得去找到系统的 CFDictionary ,这时候会发现有一个 CFDictionarySetValue 的方法

要截获 CounFoundation 库的C方法,普通的oc的 swizzle 当然是做不到的,但是幸好有 * 提供的 fishhook , fishhook 原理可以参照 iOS安全攻防(十七):Fishhook .
我们现在来截获一把,

这样我们就不会崩溃了。

整个事情的来龙去脉已经清楚了,这里提供了只是提供一个思路去解决问题。但是实际开发中不推荐这么去做,这个方法会对app性能有影响,建议用 UIButton 去模拟规避这个问题。

demo

1. iOS安全攻防(十七):Fishhook
2. lldb官方命令大全
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华硕X205TABIOS里launchcsm这个选项怎么找 朋友在一起,本来想着相互花钱不要计较那么多的,结果对方却老是想着比... 别人叫你请他吃东西,那他是不是不讨厌你。算是给你机会吗?? 哪种乌冬面比较好吃 ...膳,你小时候最爱吃那儿的豌豆黄儿。还记得那回我带你去北海吗... 苍梧鸟是什么意思? 右手五指受伤其中小指无名指各截掉一节可评几级伤残 ...桡骨骨折伤残鉴定怎么算呢,是左手的算左手的右手算右手,还是一起算... 工伤伤残鉴定中,对右手左手有区别吗? 车子出了事故,4s店在维修合同上写的交车日期,如果4s店超出预订时间交车... 江西省考面试时间2023年考试时间 2023江西省公务员考试面试时间 2023年江西省考面试时间 江西省考2023面试时间 公务员面试答题时间 江西公务员考试面试时间 2021年江西省考面试时间 省考面试答题时间 2023年江西省考公务员面试时间 打酒座的引证解释打酒座的引证解释是什么 打酒座的读音打酒座的读音是什么 新贝消毒器消字号 新贝是哪个国家的? 第四章 004 接口测试—数据库工具类封装 拖挂式房车没驾照怎么不收etc _瑜的解释_瑜的解释是什么 贵阳银行etc办理网点星朝曰办吗 丁俞涵名字的寓意 俞_的意思俞_的意思是什么 俞的意思和含义是什么意思 梦见水龙游水的预兆 梦见龙游水中的预兆 梦见田间水满有龙游的预兆 回头的成语回头的成语是什么 回头看的词语 打回头的词语打回头的词语是什么 光大〈信托是否有“融创”信托违约或延期? 中考立定跳远注意事项,立定跳远训练方法有哪些? 绝地求生刺激战场无后坐bug怎么卡无后坐bug卡法教程 wps怎么删除流程图多余的框 Java数据库操作 冰箱缺氟什么症状(冰箱缺氟是什么症状) 冰箱氟利昂没了的表现 海灯法师是骗子二指禅倒立被指作假圆寂后少林寺无人为其吊唁吗 7月7日长沙一停车场被淹后发生了什么? 2022年特大暴雨对门店的影响 五大领域包括哪些内容? 该应用未获得微信登录的权限是因为什麽? 和创(北京)科技股份有限公司广州地址 四川天石和创科技有限公司是国企吗?