[iOS 13]: Pengecualian Fatal: NSInvalidArgumentException Tidak dapat menambahkan diri sebagai subview ([NSCache init])

9

Saya telah melihat masalah / pertanyaan serupa di Stack Overflow, tetapi mereka tidak membantu.

Saya membangun aplikasi dengan Xcode 11 dan iOS 13 SDK. Masalahnya adalah saya mendapatkan semua kerusakan ini hanya di iOS 13+, meskipun aplikasi saya mendukung iOS 10+ dan ada ~ 50% pengguna iOS 12 di antara semuanya. Juga, saya tidak bisa men-debug atau memperbanyaknya.

Dari info ini saya berkesimpulan bahwa masalahnya harus spesifik untuk iOS 13. Apakah ada yang menemukan masalah yang sama baru-baru ini? Kemungkinan penyebabnya, solusinya?

Berikut ini jejak tumpukan dari 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

Pembaruan 1 : Masalah ini relevan untuk semua iPhone yang menjalankan iOS 13, tidak hanya saluran iPhone X (S, R).

Pembaruan 2 : Masalahnya juga relevan dengan iOS 12, tetapi jarang terjadi crash dibandingkan dengan iOS 13. Dugaan saya adalah bahwa masalah ini berkaitan dengan membangun proyek dengan iOS 13 SDK, karena kode yang sama dengan iOS 12 SDK tidak dibangun. dapat mem-crash seperti itu dan logika navigasi tidak diperbarui.

Aleksandr Honcharov
sumber
Kami harus melihat beberapa kode. Saya kira pandangan mencoba untuk menambahkan dirinya sebagai subview.
Samuel Noyes
Berikut ini sesuatu yang perlu diperhatikan: stackoverflow.com/a/21226801/2142112
Samuel Noyes
2
Kami memiliki kesalahan yang sama terjadi, tetapi dalam kasus kami itu tidak terbatas pada iOS 13. Tampaknya ini mungkin tentang menghadirkan / mendorong / mengabaikan / bermunculan pengendali tampilan dengan animasi, tetapi saya hanya dapat melihat tes regresi (mencoba untuk mendorong / pop dekat secara bersamaan) sebagai metode debugging yang layak.
EDUsta
1
@EDUsta Hai. Dalam kasus kami, kami juga mengalami beberapa kerusakan pada iOS 12 (90% + masih iOS 13). Ini jelas khusus untuk iOS 13 SDK. Dengan iOS 12 SDK kode yang sama tidak memancarkan kesalahan seperti itu dan kami belum mengubah logika navigasi di app.
Aleksandr Honcharov
1
@chroman Tampaknya aplikasi yang dibuat dengan Xcode 11.3 & iOS SDK 13.3 tidak memiliki kerusakan ini lagi. Saya kira itu diselesaikan di sisi Apple SDK.
Aleksandr Honcharov

Jawaban:

2

Aplikasi yang dibangun dengan Xcode 11.3 & iOS SDK 13.3 tidak lagi mengalami kerusakan ini. Saya kira itu diselesaikan di sisi iOS SDK.

Aleksandr Honcharov
sumber
Aplikasi kami terus melihat laporan kerusakan ini ketika dibuat dengan Xcode 11.3.1
esilver
@ Esilver Mungkin dalam beberapa kasus hal itu terjadi. Mungkin skenario Anda sedikit berbeda. Tetapi dalam kasus kami crash hanya hilang sama sekali.
Aleksandr Honcharov