[iOS 13]: Фатальне виняток: NSInvalidArgumentException Неможливо додати себе як підвід ([NSCache init])


9

Я бачив подібні проблеми / запитання щодо Stack Overflow, але вони не допомогли.

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

З цієї інформації я зробив висновок, що проблема повинна бути специфічною для 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 : Проблема також стосується i iOS 12, але збої трапляються рідко порівняно з iOS 13. Моя здогадка, що проблема пов’язана зі створенням проекту з iOS 13 SDK, оскільки той самий код, побудований з iOS 12 SDK, не мав не випускаю подібних збоїв, і логіка навігації не оновлювалася.


Треба було б побачити якийсь код. Я б здогадався, що представлення намагається додати себе як підперегляд.
Samuel Noyes

Ось, на що слід звернути увагу: stackoverflow.com/a/21226801/2142112
Samuel Noyes

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, більше не виникає цього збою. Я думаю, це було вирішено на стороні iK SDK.


Наш додаток продовжує бачити повідомлення про цю аварію під час створення Xcode 11.3.1
esilver

@esilver Можливо, в деяких випадках це трапляється. Можливо, ваш сценарій був дещо іншим. Але в нашому випадку аварії просто зникли зовсім.
Олександр Гончаров
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.