2013-08-23 4 views
1

테이블보기에서 항목을 선택한 후 대리자 콜백에서 [self.navigationController popViewControllerAnimated:YES];을 호출하면 이상한 사고가 발생합니다. Xcode에서는 콘솔에 아무런 흔적도 인쇄되지 않습니다. 그러나 이것은 시스템 콘솔에서 사용할 수있는 스택입니까?보기 컨트롤러를 표시 할 때 충돌이 발생합니다.

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 

업데이트

나는이 내부 자동 레이아웃 여기에 게시 것과 같은 문제입니다 확신 해요 : 난 그냥 스트럿로 다시 전환 할 것 같아요 Strange Crash when dismissing view controller, auto-layout to blame?

및 스프링 .....

+0

I 문제가 이것으로 생각; // 셀을 뷰 컨트롤러로 사용했습니다. 즉, 현재 뷰 컨트롤러를 팝합니다. 보기 컨트롤러를 popyour로 만들고 싶다면 [self popToViewController : vc animated : YES]; – SRI

+0

도움이 될 수 있습니다. http://stackoverflow.com/questions/5753256/poptoviewcontroller – SRI

+0

.xib 파일에서 레이아웃 제약 조건을 확인하십시오. 선택하지 않으면 문제가 발생할 수 있습니다. – Spynet

답변

0

문제는 자동 레이아웃에서 버그/문제와 관련이있었습니다. 내가 무엇인지는 모르겠지만, 시스템에 컨트롤을 추가하면 UISearchBar의 취소 버튼과 같은 다른 곳에서이 문제가 발생합니다. 나는 전체 프로젝트를 스트러트로 변환했으며 모든 동일한 코드로 작동한다.

자동 레이아웃이 변환 될 때까지 기다렸다가 다시 변환합니다. [: 자기 애니메이션 : self.navigationController popToViewController YES]

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

4

나무의 가지를 자르려고 서 있습니다. :)

현재 화면에 표시중인보기 컨트롤러를 팝하려면. 당신이

[self.navigationController popViewControllerAnimated:YES] 

이전 컨트롤러로 이동 호출 할 수 있습니다 단지 그 후 대리자라고 한 적

[self.navigationController popViewControllerAnimated:YES]; 
+0

예 - 저는 그 코드를 사용하곤했지만 여전히 크래시를 보았습니다 - popToVc ...을 델리게이트 * 콜백 * 내에서 호출하고 있습니다. 따라서 실제로 네비게이션 스택 맨 아래의 두 번째 VC에 있습니다. 내비게이션 스택이 통화 전에 정확한지 확인했습니다. 이것은 내가 생각하기에 레이아웃 및 뷰 메모리 관리와 관련된 일종의 문제입니다. –

+0

@muhamad : yah..thats ri8..how 어떻게 자기 viewController 팝업 수 있습니다.? – preetam

+0

@TedTomlinson : 여전히 충돌합니까? – preetam

2

을하지만, u는 경우 다른 컨트롤러로 이동 : 당신은 단순히이 작업을 수행 할 수 있습니다 그 컨트롤러의 참조를 얻을 및 오류 BU를 가져 오지해야 코드 위

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

를 사용 스택에서 뷰를 팝하면 뷰의 dealloc 메서드가 자동으로 호출됩니다. 메모리 관련 문제가 있거나 뷰의 dealloc 메서드에서 일부 0 유지 개체를 해제하고 있다고 생각합니다.

관련 문제