[iOS 13]: фатальное исключение: NSInvalidArgumentException Не могу добавить себя как подпредставление ([NSCache init])

9

Я видел похожие проблемы / вопросы по переполнению стека, но они не помогли.

Я создал приложение с Xcode 11 и iOS 13 SDK. Проблема в том, что я получаю все эти сбои только на iOS 13+, хотя мое приложение поддерживает iOS 10+ и среди пользователей iOS 12 около 50%. Кроме того, я не могу отладить или воспроизвести его.

Из этой информации я понял, что проблема должна быть связана с iOS 13. Кто-нибудь сталкивался с такой же проблемой в последнее время? Возможные причины, решения?

Вот трассировка стека от Crashlytics:

Fatal Exception: NSInvalidArgumentException
0  CoreFoundation                 0x1c25e1c30 __exceptionPreprocess
1  libobjc.A.dylib                0x1c22fc0c8 objc_exception_throw
2  CoreFoundation                 0x1c24d13ac -[NSCache init]
3  UIKitCore                      0x1c6b189a8 -[UIView(Internal) _addSubview:positioned:relativeTo:]
4  UIKitCore                      0x1c6078bb4 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke_2
5  UIKitCore                      0x1c6b11f60 +[UIView(Animation) performWithoutAnimation:]
6  UIKitCore                      0x1c6078630 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke
7  UIKitCore                      0x1c6b1784c +[UIView(Internal) _performBlockDelayingTriggeringResponderEvents:forScene:]
8  UIKitCore                      0x1c6078088 -[_UINavigationParallaxTransition animateTransition:]
9  UIKitCore                      0x1c606e2b0 ___UIViewControllerTransitioningRunCustomTransition_block_invoke_2
10 UIKitCore                      0x1c61822f8 +[UIInputResponderController _pinInputViewsForInputResponderController:onBehalfOfResponder:duringBlock:]
11 UIKitCore                      0x1c606e238 ___UIViewControllerTransitioningRunCustomTransition_block_invoke.648
12 UIKitCore                      0x1c6b11c0c +[UIView(Animation) _setAlongsideAnimations:toRunByEndOfBlock:]
13 UIKitCore                      0x1c606e088 _UIViewControllerTransitioningRunCustomTransition
14 UIKitCore                      0x1c5f9d77c -[UINavigationController _startCustomTransition:]
15 UIKitCore                      0x1c5fb0c18 -[UINavigationController _startDeferredTransitionIfNeeded:]
16 UIKitCore                      0x1c5fb20f8 -[UINavigationController __viewWillLayoutSubviews]
17 UIKitCore                      0x1c5f954e0 -[UILayoutContainerView layoutSubviews]
18 UIKitCore                      0x1c6b1fabc -[UIView(CALayerDelegate) layoutSublayersOfLayer:]
19 libobjc.A.dylib                0x1c22f7af0 -[NSObject performSelector:withObject:]
20 QuartzCore                     0x1c90be0f4 -[CALayer layoutSublayers]
21 QuartzCore                     0x1c90be3fc CA::Layer::layout_if_needed(CA::Transaction*)
22 QuartzCore                     0x1c90d1964 CA::Layer::layout_and_display_if_needed(CA::Transaction*)
23 QuartzCore                     0x1c9016c1c CA::Context::commit_transaction(CA::Transaction*, double)
24 QuartzCore                     0x1c9041bd8 CA::Transaction::commit()
25 QuartzCore                     0x1c90427ac CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)
26 CoreFoundation                 0x1c255c67c __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
27 CoreFoundation                 0x1c255731c __CFRunLoopDoObservers
28 CoreFoundation                 0x1c25578cc __CFRunLoopRun
29 CoreFoundation                 0x1c2557098 CFRunLoopRunSpecific
30 GraphicsServices               0x1cc6c1534 GSEventRunModal
31 UIKitCore                      0x1c66777ac UIApplicationMain

Обновление 1 : проблема актуальна для всех iPhone под управлением iOS 13, а не только для iPhone X (S, R).

Обновление 2 : проблема относится и к iOS 12, но сбои происходят редко по сравнению с iOS 13. Я предполагаю, что проблема связана со сборкой проекта с iOS 13 SDK, потому что тот же код, созданный с iOS 12 SDK, не не выдает такие сбои, и логика навигации не была обновлена.

Александр Гончаров
источник
Мы должны были бы увидеть некоторый код. Я предполагаю, что представление пытается добавить себя как подпредставление.
Самуэль Нойес
Вот что посмотреть: stackoverflow.com/a/21226801/2142112
Сэмюэль Нойес
2
У нас происходит та же самая ошибка, но в нашем случае она не ограничивается iOS 13. Кажется, что, вероятно, речь идет о представлении / толкании / отклонении / выталкивании контроллеров представления с анимацией, но я могу видеть только регрессионный тест (пытаясь нажать / одновременно всплыть) как жизнеспособный метод отладки.
EDUsta
1
@ EDUsta Привет. В нашем случае мы также получили несколько сбоев на iOS 12 (90% + все еще iOS 13). Это определенно специфично для iOS 13 SDK. В iOS 12 SDK один и тот же код не выдавал ошибок такого рода, и мы не изменили логику навигации в приложении.
Александр Гончаров
1
@chroman Кажется, что приложение, созданное с использованием Xcode 11.3 и iOS SDK 13.3, больше не имеет этого сбоя. Я думаю, это было решено на стороне Apple SDK.
Александр Гончаров

Ответы:

2

Приложение, созданное с Xcode 11.3 и iOS SDK 13.3, больше не имеет этого сбоя. Я думаю, это было решено на стороне iOS SDK.

Александр Гончаров
источник
Наше приложение продолжает видеть сообщения об этом
сбое
@esilver Возможно, в некоторых случаях это происходит. Возможно, ваш сценарий был немного другим. Но в нашем случае аварии просто исчезли.
Александр Гончаров