iOS14升级 点击UItextFile就崩溃(调用becomeFirstResponder崩溃)

问题:

这两天iOS14对外开放,由于没有时间适配今天了一下90% 的崩溃都是14系统 然后赶紧做适配

发现大量的崩溃都是 应用程序调用 becomeFirstResponder 出现崩溃

友盟统计到报错日志

Thread 1: "[NSXPCConnection sendInvocation]: A NULL reply block was passed into a message meant to be sent over a connection. (syncToKeyboardState:completionHandler:)"

网上找了一堆

1.有说通知没有被释放的  然后我把所有关于键盘监听的代理都断点处理了 发现没有用

2.有的说是合并代码出现的 让新建一个工程然后代码拖进去,我一个15年的老项目 放弃了

中途测试过 通过try catch 去捕捉,因为我已经抓到崩溃问题是becomeFirstResponder,但是发现捕捉不到。 这个时候真的是失去信心了

这个问题卡了两天 崩溃率从0.1%到0.9%  吓死人了

刚开始的时候 由于异常抛出 直接没有被捕捉到 只有控制台有日志,日志又没有实质性的看法。

没有办法 先机智的创建了一个新的VC 里边放了一个UItextFile   测试一下 发现可以正常输入

那就 断定工程是没有问题的 肯定是某一行代码的问题 接下来就是二分法  注销一半代码 一行代码一行的看 

最后发现工程里边 为了防止crash 导致app闪退,当时做了一个私有库,重写了

[INAvoidCrashHelperexchangeInstanceMethod:[selfclass]method1Sel:@selector(methodSignatureForSelector:)method2Sel:@selector(avoidCrashMethodSignatureForSelector:)];

    [INAvoidCrashHelperexchangeInstanceMethod:[selfclass]method1Sel:@selector(forwardInvocation:)method2Sel:@selector(avoidCrashForwardInvocation:)];


发现崩溃是这个方法发生的instanceMethodSignatureForSelector 给她替换掉 methodSignatureForSelector

然后发现OK了 。 

你可能感兴趣的:(iOS14升级 点击UItextFile就崩溃(调用becomeFirstResponder崩溃))