简体   繁体   中英

crash when popping view controller

I'm seeing a weird crash when I call [self.navigationController popViewControllerAnimated:YES]; in a delegate callback after selecting an item from a table view. No trace is printed to the console in Xcode - but this is the stack available in the system Console - any ideas?

Thread 0:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x94f5e332 __kill + 10
1   libsystem_kernel.dylib          0x94f5d932 kill$UNIX2003 + 32
2   CoreFoundation                  0x01c9876b CFHash + 43
3   CoreFoundation                  0x01c8f8b4 __CFDictionaryStandardHashKey + 36
4   CoreFoundation                  0x01cbce9c CFBasicHashRemoveValue + 1148
5   CoreFoundation                  0x01cca669 CFDictionaryRemoveValue + 185
6   Foundation                      0x011a3162 -[NSISEngine setIntegralizationAdjustment:forMarker:] + 50
7   Foundation                      0x011a97ec -[NSISEngine removeConstraintWithMarker:] + 651
8   Foundation                      0x011b388e -[NSLayoutConstraint _removeFromEngine:] + 277
9   UIKit                           0x00a80d36 -[UIView(UIConstraintBasedLayout) _layoutEngine_willRemoveLayoutConstraint:] + 64
10  UIKit                           0x005ac2ae __48-[UIScrollView _setAutomaticContentConstraints:]_block_invoke_0 + 181
11  Foundation                      0x011a8733 -[NSISEngine withAutomaticOptimizationDisabled:] + 57
12  UIKit                           0x00a80a5c -[UIView(UIConstraintBasedLayout) _withAutomaticEngineOptimizationDisabled:] + 63
13  UIKit                           0x005ac1bb -[UIScrollView _setAutomaticContentConstraints:] + 122
14  UIKit                           0x005ac9ca -[UIScrollView _rememberDependentConstraint:] + 123
15  UIKit                           0x00a8ce60 ___updateViewDependenciesForConstraint_block_invoke_0 + 51
16  UIKit                           0x00a80cee _updateViewDependenciesForConstraint + 224
17  UIKit                           0x00a80bea -[UIView(UIConstraintBasedLayout) _layoutEngine_didAddLayoutConstraint:roundingAdjustment:mutuallyExclusiveConstraints:] + 202
18  UIKit                           0x00a80da7 -[UIView(UIConstraintBasedLayout) _tryToAddConstraintWithoutUpdatingConstraintsArray:roundingAdjustment:mutuallyExclusiveConstraints:] + 61
19  UIKit                           0x00594be4 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 447
20  UIKit                           0x005a081f -[UIScrollView _didMoveFromWindow:toWindow:] + 65
21  UIKit                           0x0059505d -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1592
22  UIKit                           0x0059505d -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1592
23  UIKit                           0x005905e6 -[UIView(Hierarchy) _postMovedFromSuperview:] + 157
24  UIKit                           0x00596af4 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1784
25  UIKit                           0x0058eeed -[UIView(Hierarchy) addSubview:] + 56
26  UIKit                           0x007c58a9 -[UINavigationTransitionView transition:fromView:toView:] + 513
27  UIKit                           0x007c56a0 -[UINavigationTransitionView transition:toView:] + 55
28  UIKit                           0x00641c61 -[UINavigationController _startTransition:fromViewController:toViewController:] + 2344
29  UIKit                           0x00641eab -[UINavigationController _startDeferredTransitionIfNeeded:] + 386
30  UIKit                           0x006433d6 _popViewControllerNormal + 280
31  UIKit                           0x00643675 -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:] + 449
32  UIKit                           0x0c53b780 -[UINavigationControllerAccessibility(SafeCategory) _popViewControllerWithTransition:allowPoppingLast:] + 143
33  UIKit                           0x00642625 -[UINavigationController popViewControllerAnimated:] + 57

Update

I'm pretty sure this is an internal auto-layout issue like the one posted here: Strange Crash when dismissing view controller, auto-layout to blame?

I guess I'll just switch back to struts and springs.....

You are trying to cut the branch of tree by standing on it :)

If you want to pop the view controller which is currently displaying on the screen. You can simply do this:

[self.navigationController popViewControllerAnimated:YES];

where ever you have called the delegate ,just after that you can call

[self.navigationController popViewControllerAnimated:YES]

to go to the previous controller,but if u have to go to different controller then get the reference of that controller and use

[self.navigationController popToViewController:referenceOfYourVC animated:YES]
[self.navigationController popViewControllerAnimated:YES]; 

Above code should not bring an error but wen you pop a view from the stack, the dealloc method of the view would automatically called. I believe you might have some memory related issues or you are releasing some zero retain count object in the dealloc method of the view.

Yep problem was some sort of bug/issue with auto-layout. I'm not sure what is is, but I've run into this issue elsewhere with system added controls (like the cancel button on a UISearchBar). I Converted the whole project to struts and it works with all the same code.

I'll wait until auto-layout's been around a bit longer before converting back.

Strange Crash when dismissing view controller, auto-layout to blame?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM