[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.3iOS SDK 13.3으로 빌드 된 앱 에는 더 이상이 충돌이 없습니다. iOS SDK 쪽에서 해결 된 것 같습니다.


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

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