2009-06-22 5 views
1

Meine Anwendung testete, ob mein selectedViewController gleich meinem moreNavigationController war.Warum zeigt XCode im Debugger-Fenster die falsche Objektadresse an?

Der Ausdruck wurde immer falsch ausgewertet, also habe ich mit dem Debuggen begonnen. Ich legte einen Haltepunkt in den Code und schwebte meinen Zeiger über "Selbst", was das gelbe kaskadierende Popup verursachte, wo ich die Adressen beider Controller sehen konnte. Die Adressen waren im Popup identisch, was inkorrekt sein muss, da die if-Anweisung fehlgeschlagen ist. Ich sehe das gleiche Ergebnis im Debugger-Fenster.

Ich habe diese Logging-Anweisungen später hinzugefügt, was ergab, dass die Objekte 2 verschiedene Adressen hatten.

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

Warum lag das Debugger-Fenster? Konkret, weiß jemand, welchen Wert es als seine Adresse anzeigt, und warum die Controller die gleiche Adresse zeigen würden?

+0

Ich schrieb die if-Anweisung in den folgenden, aber ich bin immer noch neugierig auf den Debugger. \t \t if (self.tabBarController.selectedIndex> = 4 && [[self.tabBarController viewControllers] zählen]> 5) – CornPuff

Antwort

1

Ich hatte genau dieses Problem, und ich bin zu 90% sicher, dass es mit dem Aufbau eines 2.1 (oder möglicherweise 2.X) SDK zusammenhängt, während die 3.0-Entwicklungswerkzeuge verwendet werden. In meinem Fall hat das Festlegen des Ziel-SDK für 3.0 dieses Problem behoben. Ihren Debugger im Wesentlichen zu belügen ist frustrierend;)

+0

Dies als richtig (Sorry, ich tat es nicht früher). Ich sehe dieses Problem nicht mehr, ich denke, es war nur ein SDK- und Tool-Bug, wie Sie es vorschlagen. – CornPuff

0

Ich sehe GENAU die gleiche Sache. Vor allem mit Schwimmern. Ich wechsle zu 3.1 target und es zeigt rechts an. Die Frage ist, ob der Code unter 2.1 richtig funktioniert (ein NSLog der Variablen sagt mir, dass es ist).