[iOS 13]: exception fatale: NSInvalidArgumentException ne peut pas s'ajouter en tant que sous-vue ([NSCache init])

9

J'ai vu des problèmes / questions similaires sur Stack Overflow, mais ils n'ont pas aidé.

J'ai créé l'application avec Xcode 11 et le SDK iOS 13. Le problème est que je reçois tous ces plantages uniquement sur iOS 13+, même si mon application prend en charge iOS 10+ et qu'il y a ~ 50% d'utilisateurs iOS 12 parmi tous. De plus, je ne peux pas le déboguer ni le reproduire.

D'après ces informations, j'ai déduit que le problème doit être spécifique à iOS 13. Quelqu'un a-t-il rencontré récemment le même problème? Causes possibles, solutions?

Voici la trace de pile de 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

Mise à jour 1 : le problème concerne tous les iPhones exécutant iOS 13, pas seulement la ligne iPhone X (S, R).

Mise à jour 2 : le problème concerne également iOS 12, mais les plantages se produisent rarement par rapport à iOS 13. Je suppose que le problème est lié à la construction du projet avec le SDK iOS 13, car le même code créé avec le SDK iOS 12 n'a pas 'émet pas de tels plantages et la logique de navigation n'a pas été mise à jour.

Aleksandr Honcharov
la source
Il faudrait voir du code. Je suppose qu'une vue tente de s'ajouter en tant que sous-vue.
Samuel Noyes
Voici quelque chose à examiner: stackoverflow.com/a/21226801/2142112
Samuel Noyes
2
Nous avons la même erreur, mais dans notre cas, ce n'est pas limité à iOS 13. Il semble qu'il s'agit probablement de présenter / pousser / rejeter / éclater des contrôleurs de vue avec animation, mais je ne peux voir qu'un test de régression (essayer de pousser / pop near simultanément) comme méthode de débogage viable.
EDUsta
1
@EDUsta Salut. Dans notre cas, nous avons également eu plusieurs plantages sur iOS 12 (90% + toujours iOS 13). C'est certainement spécifique au SDK iOS 13. Avec iOS 12 SDK, le même code n'a émis aucune erreur de ce type et nous n'avons pas modifié la logique de navigation dans l'application.
Aleksandr Honcharov
1
@chroman Il semble que l'application construite avec Xcode 11.3 et iOS SDK 13.3 ne présente plus ce plantage. Je suppose que cela a été résolu du côté du SDK Apple.
Aleksandr Honcharov

Réponses:

2

L'application construite avec Xcode 11.3 et iOS SDK 13.3 ne présente plus ce plantage. Je suppose que cela a été résolu du côté du SDK iOS.

Aleksandr Honcharov
la source
Notre application continue de voir les rapports de cet accident lors de la construction avec Xcode 11.3.1
esilver
@esilver Peut-être que dans certains cas cela arrive. Peut-être que votre scénario était légèrement différent. Mais dans notre cas, les accidents ont tout simplement disparu.
Aleksandr Honcharov