iOS 13 和 14 上的 NSKeyValuePopPendingNotificationLocal 崩溃

Posted

技术标签:

【中文标题】iOS 13 和 14 上的 NSKeyValuePopPendingNotificationLocal 崩溃【英文标题】:NSKeyValuePopPendingNotificationLocal Crash on iOS 13 and 14 【发布时间】:2020-10-16 12:42:25 【问题描述】:

我正在开发的实时应用程序崩溃,我似乎无法重新创建或找到问题。这是崩溃输出:

`Crashed: NSOperationQueue 0x123e7d5c0 (QOS: UNSPECIFIED)
0  libobjc.A.dylib                0x184a52198 objc_release + 104
1  Foundation                     0x1850bd930 NSKeyValuePopPendingNotificationLocal + 60
2  Foundation                     0x1850bd8ac NSKeyValueDidChange.llvm.947807775919258276 + 364
3  Foundation                     0x1850bd2e0 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] + 624
4  Foundation                     0x18500cb1c -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 68
5  Foundation                     0x1850b8eb8 _NSSetLongLongValueAndNotify + 284
6  CFNetwork                      0x1880f4470 _CFNetworkHTTPConnectionCacheSetLimit + 205660
7  Foundation                     0x1850d5410 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16
8  Foundation                     0x184fdf138 -[NSBlockOperation main] + 100
9  Foundation                     0x1850d7698 __NSOPERATION_IS_INVOKING_MAIN__ + 20
10 Foundation                     0x184fdedd0 -[NSOperation start] + 732
11 Foundation                     0x1850d8090 __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__ + 20
12 Foundation                     0x1850d7b5c __NSOQSchedule_f + 180
13 libdispatch.dylib              0x18498f7dc _dispatch_block_async_invoke2 + 104
14 libdispatch.dylib              0x1849dd184 _dispatch_client_callout + 16
15 libdispatch.dylib              0x184985a3c _dispatch_continuation_pop$VARIANT$mp + 412
16 libdispatch.dylib              0x184985190 _dispatch_async_redirect_invoke + 600
17 libdispatch.dylib              0x184991fa4 _dispatch_root_queue_drain + 376
18 libdispatch.dylib              0x184992770 _dispatch_worker_thread2 + 128
19 libsystem_pthread.dylib        0x184a2cb48 _pthread_wqthread + 212
20 libsystem_pthread.dylib        0x184a2f760 start_wqthread + 8`

请帮我弄清楚这件事。谢谢

【问题讨论】:

尝试在 Xcode 中添加异常断点,也许这会指向导致崩溃的实际行。 使用 ios14 SDK 构建应用后,同样的问题和许多相似之处 @iOS_Xavier 你在使用 Kotlin Multiplatform? iOS 14 的应用更新存在相同问题,使用 Xcode 12.0.1 (12A7300) 构建。应用随机崩溃,大部分时间在后台。 @InViZz 不使用 Kotlin。使用迅速 【参考方案1】:

这是由 FirebasePerformance v3.3.1 和 XCode 12 引起的。使用“FirebasePerformance”,“3.3.0”应该可以解决问题。

将 FirebasePerformance 设置为 v3.3.0 后,我们没有看到任何 NSKeyValuePopPendingNotificationLocalAFURLSessionManagerNSKVODeallocateCFDictionaryGetValueNSKeyValueWillChange[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:]... 崩溃了。

无崩溃率从 95% 恢复到 99.9%。

【讨论】:

【参考方案2】:

我们移除了 Firebase 性能,从那时起我们不再检测到崩溃。我认为这个问题是由于 Firebase Performance 3.3.1 with Xcode 12.

【讨论】:

【参考方案3】:

我也有同样的问题。我的解决方案是降低 Firebase 的版本。这个问题应该是 Firebase Performance 造成的

【讨论】:

以上是关于iOS 13 和 14 上的 NSKeyValuePopPendingNotificationLocal 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS 14 上的 NSNumberFormatter 错误

苹果iOS14粉墨登场,3大升级值得一提,界面比iOS13更整洁

苹果13这个桌面上的小组件怎么弄得?

如何使用 iOS 14+ 的 ScrollViewReader 和 iOS 13 的部署目标

为啥需要在 pageControl 中为 iOS 13 和 iOS 14 设置不同的常量

iOS 13.6 正式版发布!数字车钥匙来了!