UIView(AdditionalLayoutSupport) _switchToLayoutEngine Xcode 崩溃

UIView(AdditionalLayoutSupport) _switchToLayoutEngine Xcode Crash

我正在处理一个奇怪的崩溃,我还没有找到解决方案。 Organizer 中崩溃的标题是 UIKit: __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke_2 + 316,整个堆栈跟踪如下。 我检查了 AppDelegate 中的 startController(_:) 方法,一切似乎都很好。这可能是一个约束问题吗?还能是什么呢?

Last Exception Backtrace:
0   CoreFoundation                  0x1d57bb38 __exceptionPreprocess + 124 (NSException.m:165)
1   libobjc.A.dylib                 0x1c803062 objc_exception_throw + 34 (objc-exception.mm:521)
2   CoreFoundation                  0x1d580fcc -[NSObject(NSObject) doesNotRecognizeSelector:] + 118 (NSObject.m:328)
3   CoreFoundation                  0x1d57f0be ___forwarding___ + 692 (NSForwarding.m:3126)
4   CoreFoundation                  0x1d4a7dc4 _CF_forwarding_prep_0 + 20
5   Foundation                      0x1ded2b76 -[NSLayoutAnchor nsli_lowerIntoExpression:withCoefficient:forConstraint:] + 498 (NSLayoutAnchor.m:883)
6   Foundation                      0x1de1b142 -[NSLayoutConstraint _lowerIntoExpression:reportingConstantIsRounded:] + 104 (NSLayoutConstraint.m:1723)
7   Foundation                      0x1de1addc -[NSLayoutConstraint _addToEngine:integralizationAdjustment:mutuallyExclusiveConstraints:] + 120 (NSLayoutConstraint.m:1606)
8   Foundation                      0x1de265b4 -[NSLayoutConstraint _addToEngine:] + 24 (NSLayoutConstraint.m:1621)
9   UIKit                           0x228a88b2 __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke_2 + 316 (NSLayoutConstraint_UIKitAdditions.m:3596)
10  Foundation                      0x1de1a97e -[NSISEngine withBehaviors:performModifications:] + 258 (NSISEngine.m:1973)
11  UIKit                           0x228a873a __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke + 502 (NSLayoutConstraint_UIKitAdditions.m:3585)
12  UIKit                           0x227aa5e8 -[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:] + 216 (NSLayoutConstraint_UIKitAdditions.m:3550)
13  UIKit                           0x228e3654 -[UIView(AdditionalLayoutSupport) _initializeHostedLayoutEngine] + 486 (NSLayoutConstraint_UIKitAdditions.m:3333)
14  UIKit                           0x228afe20 -[UIView(UIConstraintBasedLayout) _layoutEngine_windowDidChange] + 120 (NSLayoutConstraint_UIKitAdditions.m:563)
15  UIKit                           0x227aa6e0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 208 (UIView.m:12461)
16  UIKit                           0x227a9ee0 __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 120 (UIView.m:9478)
17  UIKit                           0x227a9d6c -[UIView(Hierarchy) _postMovedFromSuperview:] + 710 (UIView.m:361)
18  UIKit                           0x227b527a -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1636 (UIView.m:13256)
19  UIKit                           0x227b4bfe -[UIView(Hierarchy) addSubview:] + 726 (UIView.m:9004)
20  UIKit                           0x227b420c -[UIWindow addRootViewControllerViewIfPossible] + 506 (UIWindow.m:1498)
21  UIKit                           0x227b15b6 -[UIWindow _setHidden:forced:] + 282 (UIWindow.m:1572)
22  UIKit                           0x22821154 -[UIWindow makeKeyAndVisible] + 38 (UIWindow.m:4934)
23  MyApp                           0x1c3f28 AppDelegate.startController(_:) + 978 (AppDelegate.swift:207)
24  MyApp                           0x1cad3c specialized AppDelegate.application(_:didFinishLaunchingWithOptions:) + 3082 (AppDelegate.swift:141)
25  MyApp                           0x1c3a18 @objc AppDelegate.application(_:didFinishLaunchingWithOptions:) + 152 (<compiler-generated>:0)
26  UIKit                           0x2281d5c0 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 372 (UIApplication.m:1797)
27  UIKit                           0x22a1ea46 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3702 (UIApplication.m:2129)
28  UIKit                           0x22a23c18 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1636 (UIApplication.m:3625)
29  UIKit                           0x22a367c0 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke.3149 + 36 (UIApplication.m:10365)
30  UIKit                           0x22a21356 -[UIApplication workspaceDidEndTransaction:] + 138 (UIApplication.m:2989)
31  FrontBoardServices              0x1ee5cc0e __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 14 (FBSSerialQueue.m:158)
32  FrontBoardServices              0x1ee5cac8 -[FBSSerialQueue _performNext] + 216 (FBSSerialQueue.m:177)
33  FrontBoardServices              0x1ee5cdb2 -[FBSSerialQueue _performNextFromRunLoopSource] + 40 (FBSSerialQueue.m:206)
34  CoreFoundation                  0x1d537fd8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 8 (CFRunLoop.c:1941)
35  CoreFoundation                  0x1d537b00 __CFRunLoopDoSources0 + 420 (CFRunLoop.c:1989)
36  CoreFoundation                  0x1d535f4c __CFRunLoopRun + 1156 (CFRunLoop.c:2821)
37  CoreFoundation                  0x1d4891aa CFRunLoopRunSpecific + 466 (CFRunLoop.c:3113)
38  CoreFoundation                  0x1d488fcc CFRunLoopRunInMode + 100 (CFRunLoop.c:3143)
39  UIKit                           0x22816e28 -[UIApplication _run] + 656 (UIApplication.m:2658)
40  UIKit                           0x22811a4e UIApplicationMain + 146 (UIApplication.m:4089)
41  MyApp                           0x68564 main + 32 (HighlightsDetailViewController.swift:62)
42  libdyld.dylib                   0x1cc764e6 _dyld_process_info_notify_release + 26 (dyld_process_info_notify.cpp:327)

提前致谢!

我终于解决了这个问题。很快,崩溃只出现在 iOS 10.x 设备上,因为我的一些 .xib 文件在 "File Inspector -> Interface Builder Document -> Builds for" 中设置了更高版本的 iOS (即 11.0)而不是在项目设置中设置的默认部署目标,当然是 10.x。