내 응용 프로그램이 선택된 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)]);
왜 디버거 창이 있습니까? 특히, 주소로 표시되는 값과 컨트롤러가 동일한 주소를 표시하는 이유를 아는 사람이 있습니까?
if 문을 다음과 같이 다시 작성했지만 여전히 디버거에 대해 궁금합니다. \t \t if (self.tabBarController.selectedIndex> = 4 && [self.tabBarController viewControllerers count]> 5) – CornPuff