아이폰 개발-내 응용 프로그램을 변경하는 경우 방향
-
19-08-2019 - |
문제
나는 부딪히는 이 문제가 어디에 내 응용 프로그램 EXC_BAD_ACCESS
오류를 언제 어디서든 캔버/중지 합니다.내가 사용하는"왼쪽으로 회전하면"&"오른쪽으로 회전"옵션의 시뮬레이터 시뮬레이션하는 방향을 변경하는 동작입니다.무엇을 할 수 있는 가능한 이유는 오류?이후 나는 못하고 오류에 대한 세부정보,나 수 없습니다 감사합니다
내 모든 컨트롤러 클래스:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait); // Return YES for supported orientations
}
어떤 아이디어,포인터?감사합니다.
그러나 나의 코드가 없는 전화[UIDevice setOrientation:습니다.
이것은 추적하는 나에서 얻을 디버깅 창:
objc_msgSend
-[UIWindow _handleDeviceOrientationChange:]
_nsnote_callback
__CFXNotificationPost
_CFXNotificationPostNotification
-[NSNotificationCenter postNotificationName:object:userInfo:]
-[UIDevice setOrientation:]
-[UIApplication handleEvent:withNewEvent:]
_[UIApplication sendEvent:]
_UIApplicationHandleEvent
SendEvent
PurpleEventTimerCallBack
CFRunLoopRunSpecific
CFRunLookRunInMode
GSEventRunModel
GSEventRun
-[UIApplication _run]
UIApplicationMain
main
참고 오류가 나타납니다면 보기를 포함 탭됩니다.지 않기 때문에 하나가 회신,나는 추측이 일반적인 문제,그리고 나는 찾을 수 없습니다 모든 자원이 이 문제를 해결하.
할 수 있습니 어떻게든 알 내 응용 프로그램을 실행에서 하나의 방향(세로),그리고 보내지 않는 이벤트에 대한 방향을 변경합니다.?이를 해결할 수 있습니다 내 문제이지만,이것은 다른 내가 찾는 것이다.
감사 폴,귀하의 의견이었다고 했다 문제를 해결할 수 있지만의 비용을 유지 메모리에 대해 보지 않아요 필요합니다.여기에 무슨 일어나고 있:
내가 보기(보기)열리는 다른 뷰(View B).앱에 대한 방법에 대한 책임 열기 모두 보고 볼 B.하지 않는 응용 프로그램에 충돌을 보 A.를 제거보기 창에서,그리고 그것을 풀어 컨트롤러 개체를 추가 View B 하는 창입니다.이는 내가 뭔가 잘못입니다.당신은 나에게 도움이 될 수 있습으로드?
여기에 코드를 해제를 위한 보기와 열기 보기 B:
- (void)openViewB {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES];
// Remove viewControllerA from the window's view
[window removeFromSuperview];
// !-- Commenting out this block fixes the issue --!
// Release memory wired for viewControllerA view
if(viewControllerA) {
[viewControllerA release];
viewControllerA = nil;
}
// We call window:addSubView to add the viewB to the main window.
// You can use this call to add other views as child views not only to windows
// but to other views as well. (UIWindow is a subclass of UIView).
[window addSubview:viewControllerB.view];
[UIView commitAnimations];
// Override point for customization after application launch
[window makeKeyAndVisible];
}
나는 응용 프로그램을 시작으로 탭을 바 응용 프로그램 템플릿 viewControllerB
의 형식 UITabBarController
.나는 확실히 하고 무언가 잘못된 여기에.어떤 점?
해결책
기기에서 충돌 시스템 라이브러리 코드를 때문에 뭔가 하지 않았을 설정입니다.이 될 수 있는}의거나 그 내용을 보거나 보기 컨트롤러 인스턴스가 유지되지 않으나 가지고 발표했습니다.
는 shouldrotate 방법이 도움이되지 않습니다면 컨트롤러지 않은 주변에 아직도있다.
rpetrich 의 제안 내용을 확인하는 객체를 가지고 발표했다.
특별히 어려운 문제를 추가할 수 있습니다 릴리스,유지하고,dealloc 방법(는 로그와 부르 슈퍼)에 의심 클래스의 당신의 풀어 놓습니다.Log-retaincount 추적하는(내가 사용하는 이에 대한 진단을 목적으로 하지 않는 메모리 관리에서 배송 응용 프로그램).
다른 팁
설정에 중단점 -[UIDevice setOrientation:]
고 단계를 통해 당신의 코드를 디버거.
을 쉽게 디버깅할 수 있습 유형 call (void)instrumentObjcMessageSends(YES)
오른쪽에 디버거가 콘솔 로그인 objc_msgSend
s/tmp,다음 continue
실행하고 그것을 추적할 것입니다 모든 메시지가 전송되는 오른쪽까지 충돌이 발생합니다.
나도 같은 문제에 직면했는데, ViewController가 [ViewController Release]를 사용하여 릴리스되지만 여전히보기를 사용하고 그때까지 방향을 변경하면 응용 프로그램이 충돌합니다.
ViewController를 언제 출시 해야하는지 정확히 알아 내야합니다 [출구 시점].