[iOS 13] : 치명적인 예외 : NSInvalidArgumentException 자체를 서브 뷰로 추가 할 수 없음 ([NSCache init])


9

Stack Overflow에서 비슷한 문제 / 질문을 보았지만 도움이되지 않았습니다.

Xcode 11 및 iOS 13 SDK로 앱을 빌드했습니다. 문제는 내 앱이 iOS 10 이상을 지원하지만 iOS 12 사용자가 ~ 50 %이지만 iOS 13 이상에서만 충돌이 발생한다는 것입니다. 또한 디버깅하거나 재현 할 수 없습니다.

이 정보에서 문제는 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 X (S, R) 회선뿐만 아니라 iOS 13을 실행하는 모든 iPhone과 관련이 있습니다.

업데이트 2 :이 문제는 iOS 12와 관련이 있지만 iOS 13과 비교하여 거의 발생하지 않습니다. 제 생각에 문제는 iOS 12 SDK로 빌드 한 동일한 코드가 iOS 13 SDK로 프로젝트를 빌드하는 것과 관련이 있다고 생각합니다 그런 충돌을 일으키지 않고 탐색 로직이 업데이트되지 않았습니다.


우리는 몇 가지 코드를보아야 할 것입니다. 뷰가 자체를 하위 뷰로 추가하려고 시도하고 있다고 생각합니다.
— Samuel Noyes


2
동일한 오류가 발생하지만 iOS 13에만 국한되지는 않습니다. 애니메이션이있는 뷰 컨트롤러를 표시 / 푸시 / 해제 / 팝핑하는 것 같지만 회귀 테스트 만 볼 수 있습니다 (푸시 / 가능한 디버깅 방법으로 동시에 팝업).
— EDUsta

1
@EDUsta 안녕하세요. 이 경우 iOS 12에서도 몇 가지 충돌이 발생했습니다 (90 % 이상 iOS 13). iOS 13 SDK에만 해당됩니다. iOS 12 SDK를 사용하면 동일한 코드에서 이러한 종류의 오류가 발생하지 않았으며 앱에서 탐색 논리를 변경하지 않았습니다.
— Aleksandr Honcharov

1
@chroman Xcode 11.3 및 iOS SDK 13.3으로 빌드 된 앱에 더 이상이 충돌이없는 것 같습니다. Apple SDK 쪽에서 해결 된 것 같습니다.
— Aleksandr Honcharov

답변:


2

Xcode 11.3 및 iOS SDK 13.3으로 빌드 된 앱 에는 더 이상이 충돌이 없습니다. iOS SDK 쪽에서 해결 된 것 같습니다.


우리의 응용 프로그램은 Xcode 11.3.1로 빌드 할 때이 충돌에 대한 보고서를 계속 봅니다
— esilver

@esilver 어쩌면 어떤 경우에는 일어날 수 있습니다. 시나리오가 약간 다를 수도 있습니다. 그러나 우리의 경우 충돌은 완전히 사라졌습니다.
— 알렉산드르 혼차 로프
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.