[iOS 13]: Eccezione irreversibile: NSInvalidArgumentException Impossibile aggiungere auto come sottoview ([NSCache init])


9

Ho visto problemi / domande simili su StackTranslate.it, ma non sono stati utili.

Ho creato l'app con Xcode 11 e iOS 13 SDK. Il problema è che ottengo tutti questi arresti anomali solo su iOS 13+, anche se la mia app supporta iOS 10+ e ci sono circa il 50% degli utenti iOS 12 tra tutti. Inoltre, non posso eseguire il debug o riprodurlo.

Da queste informazioni ho dedotto che il problema deve essere specifico per iOS 13. Qualcuno ha riscontrato di recente lo stesso problema? Possibili cause, soluzioni?

Ecco la traccia dello stack di 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

Aggiornamento 1 : il problema è relativo a tutti gli iPhone con iOS 13, non solo alla linea iPhone X (S, R).

Aggiornamento 2 : il problema è rilevante anche per iOS 12, ma gli arresti anomali si verificano raramente rispetto a iOS 13. La mia ipotesi è che il problema è legato alla costruzione del progetto con iOS 13 SDK, perché lo stesso codice creato con iOS 12 SDK non lo faceva emettono tali arresti anomali e la logica di navigazione non è stata aggiornata.


Dovremmo vedere un po 'di codice. Immagino che una vista stia tentando di aggiungersi come sottoview.
Samuel Noyes,


2
Si verifica lo stesso errore, ma nel nostro caso non è limitato a iOS 13. Sembra che probabilmente si tratti di presentare / spingere / eliminare / visualizzare i controller di visualizzazione con l'animazione, ma riesco a vedere solo un test di regressione (cercando di spingere / pop vicino contemporaneamente) come metodo di debug praticabile.
EDUsta

1
@EDUsta Ciao. Nel nostro caso abbiamo anche avuto diversi arresti anomali su iOS 12 (90% + ancora iOS 13). È decisamente specifico per iOS 13 SDK. Con iOS 12 SDK lo stesso codice non ha emesso errori di questo tipo e non abbiamo modificato la logica di navigazione nell'app.
Aleksandr Honcharov,

1
@chroman Sembra che l'app costruita con Xcode 11.3 e iOS SDK 13.3 non abbia più questo crash. Immagino sia stato risolto dal lato dell'SDK di Apple.
Aleksandr Honcharov,

Risposte:


2

L'app costruita con Xcode 11.3 e iOS SDK 13.3 non ha più questo crash. Immagino che sia stato risolto sul lato SDK di iOS.


La nostra app continua a visualizzare segnalazioni di questo arresto anomalo quando viene costruita con Xcode 11.3.1
esilver

@esilver Forse in alcuni casi succede. Forse il tuo scenario era leggermente diverso. Ma nel nostro caso gli incidenti sono scomparsi del tutto.
Aleksandr Honcharov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.