提问人:abhinavroy23 提问时间:12/18/2019 更新时间:12/27/2019 访问量:360
[_LSDefaults sharedInstance]:发送到类 0x20cbf3aa0 的无法识别的选择器
[_LSDefaults sharedInstance]: unrecognized selector sent to class 0x20cbf3aa0
问:
我最近将代码库升级到 Xcode11.3,在没有详细日志的情况下启动时出现此错误:
2019-12-18 15:18:40.461627+0530 XXXXX[2485:622148] +[_LSDefaults sharedInstance]: unrecognized selector sent to class 0x20cbf3aa0
2019-12-18 15:18:40.462868+0530 XXXXX[2485:622148] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[_LSDefaults sharedInstance]: unrecognized selector sent to class 0x20cbf3aa0'
*** First throw call stack:
(0x1c512498c 0x1c4e4d0a4 0x1c502ccc8 0x1c578f50c 0x1c53df908 0x1c512ad90 0x1c4ffabd0 0x10c717cf8 0x10c71abc0 0x10c7242e4 0x10c723e78 0x10c7239d0 0x10c71f55c 0x10c77b5e4 0x10c7740f0 0x10c7ed5cc 0x10c7740f0 0x10c7b2f78 0x10c7d69b4 0x10c7b9f48 0x10c776e5c 0x10c7433bc 0x1c4e411ec 0x1c4e44aec)
libc++abi.dylib: terminating with uncaught exception of type NSException
不知道这里出了什么问题,有什么方法可以在这个“0x20cbf3aa0”的代码中获取实际的类吗?
注意:这仅发生在运行 iOS > 13 的物理设备上
答:
0赞
abhinavroy23
12/18/2019
#1
我找到了根本原因:
添加了以查找以下堆栈跟踪。NSSetUncaughtExceptionHandler
2019-12-18 16:37:55.892789+0530 XXXXX[2603:645006] Stack Trace: (
0 CoreFoundation 0x00000001c51249a0 DA838E75-6B30-360E-9661-C4800A7E1BF6 + 1227168
1 libobjc.A.dylib 0x00000001c4e4d0a4 objc_exception_throw + 56
2 CoreFoundation 0x00000001c502ccc8 DA838E75-6B30-360E-9661-C4800A7E1BF6 + 212168
3 CoreServices 0x00000001c578f50c 4631A29A-FFB2-3A9D-95FF-1037507BD066 + 840972
4 Foundation 0x00000001c53df908 0DF2911E-80CB-3289-8A1E-ED0913D55A12 + 43272
5 CoreFoundation 0x00000001c512ad90 DA838E75-6B30-360E-9661-C4800A7E1BF6 + 1252752
6 CoreFoundation 0x00000001c4ffabd0 DA838E75-6B30-360E-9661-C4800A7E1BF6 + 7120
7 XXXXX 0x00000001086d3cc0 - **[ONIMehtodId invokeWithTarget:Target:parameter:result:]** + 4372
8 XXXXX 0x00000001086d6b88 fdwPRGInHj7S + 140
9 XXXXX 0x00000001086e02ac fdioJuJ5X8sy + 60
10 XXXXX 0x00000001086dfe40 fdfAYA5Knk6m + 1180
11 XXXXX 0x00000001086df998 fderBiHVLVSO + 132
12 XXXXX 0x00000001086db524 fdpriAImFRX8 + 5820
13 XXXXX 0x00000001087375ac 10Qp8Dl9pVnp + 440
14 XXXXX 0x00000001087300b8 108jVd8JFekR + 232
15 XXXXX 0x00000001087a9594 10uqENVjb5qq + 244
16 XXXXX 0x00000001087300b8 108jVd8JFekR + 232
17 XXXXX 0x000000010876ef40 100iZEfbT6gW + 1608
18 XXXXX 0x000000010879297c 10QzlTW4v2Ir + 56
19 XXXXX 0x0000000108775f10 10yEsmvqVxay + 320
20 XXXXX 0x0000000108732e24 10mN8k4ha1CN + 496
21 XXXXX 0x00000001086ff384 10444cFtXXLs + 148
22 libsystem_pthread.dylib 0x00000001c4e411ec _pthread_start + 124
23 libsystem_pthread.dylib 0x00000001c4e44aec thread_start + 8)
观察第 7 行的崩溃日志表明它正在使用 的方法ONIMethodId
invokeWithTarget
在那之后,我检查了我所有第三方框架的符号(命令 - ),我知道我的一个框架正在使用这种方法,最终调用私有方法。该方法已从 iOS >= 13.0 SDK 中删除。nm frameworkBinary
_LSDefaults
我向我的第三方供应商提出了这个问题,他们将为此提供更新的框架。
感谢大家的评论和关注这个问题,发布答案,以便它可以帮助将来遇到相同问题的任何其他人。
评论
0赞
guozqzzu
3/23/2020
您能分享这个(或那些)第 3 部分框架的名称吗?
0赞
abhinavroy23
3/23/2020
@guozqzzu - 当然,由于合规性,我无法告诉你确切的名称,但为了提示,它是支付宝的一个框架。
0赞
ingconti
12/27/2019
#2
如果您发布代码,我可以为您提供帮助,但其他人注意到,应该是 no=n-apple 调用。(ONIMehtodId 不是 apple)
请附上您在 Xcode 中使用的外部框架列表。
评论