iPhone 프로젝트를 진행 중입니다. 이제 다른 UIViewController에서 새 UIViewController를 시작한 다음 두 UIViewController간에 전환합니다. 여기 내 코드가있다.오브젝트가 해제 된 후 수정되었을 가능성이 있음
iGreenAppDelegate *delegate = [UIApplication sharedApplication].delegate;
if(checkInViewController) {
[checkInViewController release];
checkInViewController = nil;
}
checkInViewController = [[CheckInViewController alloc] initWithCheckpoint:checkpoint];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.8];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:[delegate window] cache:YES];
[[delegate rootTabBarController].view removeFromSuperview];
[[delegate window] addSubview:checkInViewController.view];
[UIView commitAnimations];
두 번째로 UIViewController를 초기화 할 때 문제가 발생하여 메모리 누수가 발생하지 않도록하고 싶습니다. 디버거는
iGreen (916,0x3f60348c)의 malloc를 표시 객체 0x130350에 대한 오류 : 잘못된 체크를 해제 개체에 대해 - 객체가 아마 해제 후 수정되었습니다. 디버깅을 위해 malloc_error_break에 중단 점을 설정하십시오.
다른 부분의 유사한 코드가 이러한 오류를 반환하지 않기 때문에 이상합니다. 또한 autorelease를 시도했지만 프로그램이 즉시 중단되고 Debugger에 최종 레이어가 수정된다고 나와 있습니다.
나는 밤새 문제를 해결하기 위해 노력해 왔지만 여전히 혼란 스럽다.
, 나는이의 ViewController를 해제하지 않는 경우, 프로그램은 잘 작동하지만 나는 그것을 해결하는 좋은 방법이라고 생각하지 않습니다. 아무도 내가 문제를 찾을 수 있도록 도와 주시겠습니까 – Stone
그냥이 코드 조각에서 코드에서 진행되는 일을 따라하기는 어렵지만 일반적으로보기 컨트롤러를 할당하고 탭바 컨트롤러에 추가 한 다음보기 컨트롤러를 해제하면됩니다. 탭바 어 컨트롤러는 뷰 콘트롤러를 유지하므로 바로 붙습니다. 탭바 컨트롤러가 끝나기 전에 그걸 풀어주는 것처럼 보입니다. 어쩌면이 질문에 더 명확한 코드를 추가 할 수 있습니까? –
initWithCheckpoint 구현을 추가 할 수 있습니까? 또한 Xcode 메뉴에서 빌드하고 분석해 보셨습니까? – AmineG