문제

나는 부딪히는 이 문제가 어디에 내 응용 프로그램 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_msgSends/tmp,다음 continue 실행하고 그것을 추적할 것입니다 모든 메시지가 전송되는 오른쪽까지 충돌이 발생합니다.

나도 같은 문제에 직면했는데, ViewController가 [ViewController Release]를 사용하여 릴리스되지만 여전히보기를 사용하고 그때까지 방향을 변경하면 응용 프로그램이 충돌합니다.

ViewController를 언제 출시 해야하는지 정확히 알아 내야합니다 [출구 시점].

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top