[iOS 13]: Schwerwiegende Ausnahme: NSInvalidArgumentException Selbst kann nicht als Unteransicht hinzugefügt werden ([NSCache init])

9

Ich habe ähnliche Probleme / Fragen zum Stapelüberlauf gesehen, aber sie haben nicht geholfen.

Ich habe die App mit Xcode 11 und iOS 13 SDK erstellt. Das Problem ist, dass ich all diese Abstürze nur unter iOS 13+ bekomme, obwohl meine App iOS 10+ unterstützt und es unter allen ~ 50% iOS 12-Benutzer gibt. Außerdem kann ich es nicht debuggen oder reproduzieren.

Aus diesen Informationen habe ich geschlossen, dass das Problem spezifisch für iOS 13 sein muss. Ist in letzter Zeit jemand auf dasselbe Problem gestoßen? Mögliche Ursachen, Lösungen?

Hier ist die Stapelverfolgung von 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

Update 1 : Das Problem betrifft alle iPhones mit iOS 13, nicht nur die iPhone X (S, R) -Linie.

Update 2 : Das Problem ist auch für iOS 12 relevant, aber Abstürze treten im Vergleich zu iOS 13 selten auf. Ich vermute, dass das Problem mit dem Erstellen des Projekts mit iOS 13 SDK zusammenhängt, da derselbe mit iOS 12 SDK erstellte Code dies nicht tat Es werden keine solchen Abstürze ausgegeben und die Navigationslogik wurde nicht aktualisiert.

Aleksandr Honcharov
quelle
Wir müssten einen Code sehen. Ich würde vermuten, dass eine Ansicht versucht, sich selbst als Unteransicht hinzuzufügen.
Samuel Noyes
Hier ist etwas zu untersuchen: stackoverflow.com/a/21226801/2142112
Samuel Noyes
2
Wir haben den gleichen Fehler, aber in unserem Fall ist er nicht auf iOS 13 beschränkt. Es scheint, dass es wahrscheinlich darum geht, View-Controller mit Animation zu präsentieren / zu pushen / zu schließen / zu poppen, aber ich kann nur einen Regressionstest sehen (versuchen zu pushen /). Pop in der Nähe gleichzeitig) als praktikable Debugging-Methode.
EDUsta
1
@ EDUsta Hallo. In unserem Fall gab es auch mehrere Abstürze unter iOS 12 (90% + immer noch iOS 13). Es ist definitiv spezifisch für iOS 13 SDK. Mit iOS 12 SDK hat derselbe Code keine derartigen Fehler ausgegeben und wir haben die Navigationslogik in der App nicht geändert.
Aleksandr Honcharov
1
@chroman Es scheint, dass die mit Xcode 11.3 und iOS SDK 13.3 erstellte App diesen Absturz nicht mehr hat. Ich denke, es wurde auf der Apple SDK-Seite gelöst.
Aleksandr Honcharov

Antworten:

2

Die mit Xcode 11.3 und iOS SDK 13.3 erstellte App hat diesen Absturz nicht mehr. Ich denke, es wurde auf der iOS SDK-Seite gelöst.

Aleksandr Honcharov
quelle
Unsere App sieht weiterhin Berichte über diesen Absturz, wenn sie mit Xcode 11.3.1
esilver
@esilver Vielleicht passiert es in einigen Fällen. Vielleicht war Ihr Szenario etwas anders. Aber in unserem Fall sind die Abstürze einfach ganz verschwunden.
Aleksandr Honcharov