从App随机崩溃(KVO_IS_RETAINING_ALL_OBSERVERS...)到彻底修复的回顾(上)

这篇博客介绍了iOS应用在特定UI操作后随机崩溃的问题,崩溃类型为EXC_BAD_ACCESS。作者通过开启僵尸对象发现崩溃与僵尸对象无关,而是可能由于已释放的对象被误用。文章提供了崩溃堆栈信息,并指出界面改变可能与问题有关,推测Notification可能是问题的根源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博通过具体的实例向大家展示如何一步步通过合(xia)理(cai)分析找出问题的罪魁祸首,适合有一定调试经验的童鞋,也欢迎各路神仙和小白围观,本人水平一般,欢迎指正,但我就是不改.

崩溃特征

0.崩溃的类型是EXC_BAD_ACCESS

1.App崩溃虽说是随机的,但在一定次数的相同UI操作后必定会发生,但操作的次数不固定。

2.从Xcode里观察崩溃时的源代码,"按道理"完全不可能崩溃

3.而且特别有意思的地方是:当你在Xcode中开启了"僵尸对象"后,崩溃现象神奇的消失了

4.每次崩溃的堆栈痕迹(以下简称栈迹,觉得别扭么?习惯就好)都不一样,但翻来覆去就是那几种

5.有一次崩溃后栈迹里完全看不到函数符号名称,只有一些地址,这说明堆栈记录破坏的很厉害。还有一次更离谱:崩溃App直接从真机里退出了,留下一脸懵逼的Xcode傻傻的在那里完全没有反应…

用栗子说话

有点兴趣了么?下面是其中一个崩溃时的栈迹(是的,我也记不得调试了多少次…):

* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x5c89a7ce0)
    frame #0: 0x00000001c223fdac libobjc.A.dylib`object_isClass + 16
    frame 
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊猫侯佩

赏点钱让我买杯可乐好吗 ;)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值