2009-06-22 2 views
1

내 응용 프로그램이 선택된 selectedViewController가 내 moreNavigationController와 같은지 테스트했습니다.디버거 창에 Xcode가 잘못된 개체 주소를 표시하는 이유는 무엇입니까?

if(self.tabBarController.moreNavigationController == self.tabBarController.selectedViewController) 
{ 
// do something awesome. 
} 
else 
{ 
    NSLog(@"No match"); 
} 

표현식은 항상 거짓으로 평가되므로 디버깅을 시작했습니다. 코드에 중단 점을 넣고 'self'위에 마우스 포인터를 올렸습니다. 두 컨트롤러의 주소를 볼 수있는 노란색 계단식 팝업이 나타납니다. 주소는 팝업에서 같았습니다. if 문이 실패한 이후 올바르지 않아야합니다. 디버거 창에서 동일한 결과가 표시됩니다.

나중에이 로깅 문을 추가하여 개체에 2 개의 다른 주소가 있음을 알았습니다.

NSLog([NSString stringWithFormat:@"%d",(self.tabBarController.moreNavigationController)]); 
NSLog([NSString stringWithFormat:@"%d",(self.tabBarController.selectedViewController)]); 

왜 디버거 창이 있습니까? 특히, 주소로 표시되는 값과 컨트롤러가 동일한 주소를 표시하는 이유를 아는 사람이 있습니까?

+0

if 문을 다음과 같이 다시 작성했지만 여전히 디버거에 대해 궁금합니다. \t \t if (self.tabBarController.selectedIndex> = 4 && [self.tabBarController viewControllerers count]> 5) – CornPuff

답변

1

이 똑같은 문제가 있었는데 3.0 dev 도구를 사용하면서 2.1 (또는 가능하게는 2.X) SDK를 빌드하는 것과 90 % 확신합니다. 필자의 경우 3.0 용 대상 SDK를 설정하면이 문제가 해결되었습니다. 디버거가 기본적으로 거짓말을하게하는 것은 좌절 스럽습니다.)

+0

올바른 것으로 표시합니다 (미안하지만 이전에 사용하지 못했습니다). 더 이상이 문제가 보이지 않습니다. SDK와 툴 버그 일뿐입니다. – CornPuff

0

나는 똑같은 것을보고 있습니다. 특히 수레가있는 곳. 3.1 대상으로 전환하면 오른쪽으로 표시됩니다. 문제는 코드가 2.1에서 올바르게 작동하는지입니다 (변수의 NSLog가 나에게 알려줍니다).

관련 문제