2009-06-22 51 views
1

我的應用程序測試了我的selectedViewController是否等於我的moreNavigationController。爲什麼XCode在調試器窗口中顯示錯誤的對象地址?

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)]); 

爲什麼調試窗口在說謊?具體來說,是否有人知道它顯示的地址是什麼值,以及爲什麼控制器會顯示相同的地址?

+0

我重寫了if語句以下,但我仍然對調試器很好奇。 \t \t if(self.tabBarController.selectedIndex> = 4 && [[self.tabBarController viewControllers] count]> 5) – CornPuff 2009-06-22 23:17:32

回答

1

我有這個完全相同的問題,我90%確定它與使用3.0開發工具時爲2.1(或可能是2.X)SDK構建相關。就我而言,設置3.0版的目標SDK解決了這個問題。 讓你的調試器本質上對你說謊是令人沮喪的;)

+0

將此標記爲正確(對不起,我以前沒有這樣做)。我不再看到這個問題,我想這只是一個SDK和工具錯誤,就像你建議的一樣。 – CornPuff 2012-08-20 22:32:47

0

我看到完全相同的東西。尤其是漂浮物。我切換到3.1目標,它顯示正確。問題是,該代碼是否真的在2.1下工作正常(NSLog的變量告訴我這是)。

相關問題