为什么XCode在调试器窗口中显示错误的对象地址?

时间:2009-06-22 22:35:00

标签: iphone xcode

我的应用程序测试了我的selectedViewController是否等于我的moreNavigationController。

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

表达式总是被评估为false,所以我开始调试。我在代码中放了一个断点,并将我的指针悬停在'self'上,这导致黄色级联弹出窗口,我可以看到两个控制器的地址。弹出窗口中的地址相同,因为if语句失败,所以地址必须不正确。我在调试器窗口中看到了相同的结果。

我稍后添加了这些日志记录语句,显示对象有2个不同的地址。

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

为什么调试器窗口在于?具体来说,有人知道它显示的地址是什么,以及控制器显示相同地址的原因是什么?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我90%确定它与使用3.0开发工具构建2.1(或可能的2.X)SDK有关。在我的例子中,设置目标SDK for 3.0解决了这个问题。 让调试器基本上骗你是令人沮丧的;)

答案 1 :(得分:0)

我看到完全相同的事情。尤其是花车。我切换到3.1目标,它显示正确。问题是,代码是否真的在2.1下正常工作(变量的NSLog告诉我它是。)