在我的iOS应用程序中,我使用Swift和Obj-c与外部库,但出于某种原因,当库添加子视图时,我遇到了崩溃。
[view addSubview:self];
堆栈跟踪如下所示,很难跟踪错误,因为它不在顶部附近(我认为)。
*** Terminating app due to uncaught exception 'NSRangeException', reason:
'*** -[__NSArrayM objectAtIndex:]: index 4 beyond bounds [0 .. 1]'
*** First throw call stack:
(
0 CoreFoundation 0x000000010913ac65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000108dd3bb7 objc_exception_throw + 45
2 CoreFoundation 0x0000000109024093 -[__NSArrayM objectAtIndex:] + 227
3 UIKit 0x0000000106fa1881 _UIViewTopDownSubtreeTraversal + 193
4 UIKit 0x00000001075c2fa3 -[UIView(UIConstraintBasedLayout_EngineDelegate) _invalidateSystemLayoutSizeFittingSizeAtEngineDelegateLevel] + 141
5 Foundation 0x00000001065e4d6f -[NSISEngine tryToAddConstraintWithMarker:expression:integralizationAdjustment:mutuallyExclusiveConstraints:] + 915
6 Foundation 0x000000010676f1e8 -[NSLayoutConstraint _addLoweredExpression:toEngine:integralizationAdjustment:lastLoweredConstantWasRounded:mutuallyExclusiveConstraints:] + 275
7 Foundation 0x00000001065d949a -[NSLayoutConstraint _addToEngine:integralizationAdjustment:mutuallyExclusiveConstraints:] + 220
8 UIKit 0x00000001075bfa34 __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke_2 + 474
9 Foundation 0x00000001065e71be -[NSISEngine withBehaviors:performModifications:] + 155
10 UIKit 0x00000001075bf83a __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke + 452
11 UIKit 0x00000001075bf64d -[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:] + 197
12 UIKit 0x00000001075bf933 __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke_2 + 217
13 Foundation 0x00000001065e71be -[NSISEngine withBehaviors:performModifications:] + 155
14 UIKit 0x00000001075bf83a __57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke + 452
15 UIKit 0x00000001075bf64d -[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:] + 197
16 UIKit 0x00000001075bf2de -[UIView(AdditionalLayoutSupport) _initializeHostedLayoutEngine] + 404
17 UIKit 0x00000001075b426e -[UIView(UIConstraintBasedLayout) _layoutEngine_windowDidChange] + 126
18 UIKit 0x0000000106fbf561 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 209
19 UIKit 0x0000000106fb7ecf __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 125
20 UIKit 0x0000000106fb7e43 -[UIView(Hierarchy) _postMovedFromSuperview:] + 437
21 UIKit 0x0000000106fc1f48 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1660
22 UIKit 0x0000000106f3765a -[_UIParallaxDimmingView didMoveToWindow] + 123
23 UIKit 0x0000000106fbfa68 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1496
24 UIKit 0x0000000106fbf74a -[UIView(Internal) _didMoveFromWindow:toWindow:] + 698
25 UIKit 0x0000000106fb7ecf __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 125
26 UIKit 0x0000000106fb7e43 -[UIView(Hierarchy) _postMovedFromSuperview:] + 437
27 UIKit 0x0000000106fc1f48 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1660
28 UIKit 0x0000000106f33f08 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke + 2101
29 UIKit 0x0000000106fbc68e +[UIView(Animation) performWithoutAnimation:] + 65
30 UIKit 0x0000000106f33342 -[_UINavigationParallaxTransition animateTransition:] + 1225
31 UIKit 0x000000010709abfc -[UINavigationController _startCustomTransition:] + 3038
32 UIKit 0x00000001070a63bf -[UINavigationController _startDeferredTransitionIfNeeded:] + 386
33 UIKit 0x00000001070a6f0e -[UINavigationController __viewWillLayoutSubviews] + 43
34 UIKit 0x00000001071f1715 -[UILayoutContainerView layoutSubviews] + 202
35 UIKit 0x0000000106fc4a2b -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 536
36 QuartzCore 0x00000001087e3ec2 -[CALayer layoutSublayers] + 146
37 QuartzCore 0x00000001087d86d6 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
38 QuartzCore 0x00000001087d8546 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
39 QuartzCore 0x0000000108744886 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242
40 QuartzCore 0x0000000108745a3a _ZN2CA11Transaction6commitEv + 462
41 QuartzCore 0x00000001087460eb _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
42 CoreFoundation 0x000000010906dca7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
43 CoreFoundation 0x000000010906dc00 __CFRunLoopDoObservers + 368
44 CoreFoundation 0x0000000109063a33 __CFRunLoopRun + 1123
45 CoreFoundation 0x0000000109063366 CFRunLoopRunSpecific + 470
46 GraphicsServices 0x000000010b1bfa3e GSEventRunModal + 161
47 UIKit 0x0000000106f44900 UIApplicationMain + 1282
48 HedgeEm 0x0000000104f1cfdf main + 111
49 libdyld.dylib 0x0000000109cff145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
我的第一个想法是寻找任何使用数组的东西,但在我的代码中没有任何东西,我认为它与iOS添加子视图但失败有关。 进一步调查,相同的实现在ios 7中工作,我知道它与可能的约束问题有关 - 可能是添加的编译时间限制。我想这对于使用旧库是正确的。
答案 0 :(得分:1)
我使用的是EAIntroView库EAIntroView - GitHub 事实证明,库存在问题,最新版本导致iOS 8崩溃,GitHub - crash discussion所以解决方案是降级到2.6并且工作正常。