iOS应用SIGABRT崩溃排查求助:未识别选择器调用问题
iOS应用崩溃原因排查分析
核心崩溃现象
崩溃类型为EXC_CRASH (SIGABRT),触发本质是向内存地址0x303475170的对象发送了它无法识别的方法调用,崩溃发生在MendixEncryptedStorageModule的getItem:resolver:rejecter:方法第93行。
崩溃调用链定位
从异常回溯栈可以明确关键调用路径:
5 Boubyan Takaful Insurance 0x1045199fc -[MendixEncryptedStorageModule getItem:resolver:rejecter:] + 456 (MendixEncryptedStorageModule.m:93) ... 2 CoreFoundation 0x1a669e480 -[NSObject(NSObject) doesNotRecognizeSelector:] + 344 (NSObject.m:161)
第5帧是崩溃触发的业务代码位置,第2帧确认了"对象无法识别目标方法"的核心问题。
可能的崩溃原因
- 对象类型不匹配:
MendixEncryptedStorageModule.m第93行中,代码对某个对象执行了不符合其类型的方法调用。比如预期是加密存储实例,实际却是NSNull、普通字典等不具备目标方法的对象。 - 野指针访问:目标对象已被ARC自动释放或手动释放,内存地址被其他对象复用,此时向该地址发送方法会触发无法识别选择器的崩溃。
- 方法定义/调用错误:调用的方法名称拼写错误,或者方法的参数数量、类型与类中声明的不匹配,导致运行时无法找到对应方法实现。
排查建议
- 定位代码细节:直接查看
MendixEncryptedStorageModule.m第93行代码,确认调用的对象和方法:- 打印该对象的
className,验证其类型是否符合预期 - 检查目标方法是否在该对象的类中正确声明和实现
- 打印该对象的
- 检查对象生命周期:
- 若该对象是类属性,确认是否用
strong修饰以避免提前释放 - 排查多线程环境下的对象释放问题(当前崩溃发生在dispatch工作线程)
- 若该对象是类属性,确认是否用
- 验证RN桥接参数:
- 该崩溃通过React Native的
RCTModuleMethod触发,检查JS层调用getItem时传递的参数是否合法,是否导致Native层接收到异常对象
- 该崩溃通过React Native的
内容的提问来源于stack exchange,提问作者vijay
相关产品推荐
相关产品推荐

