Ich habe etwas Code, der auf dem Vergleich von zwei NSIndexPaths und der Ausführung von unterschiedlichem Code beruht, basierend auf ihrer Gleichheit oder dem Fehlen derselben (mit -isEqual). Die meiste Zeit funktioniert es richtig, aber manchmal nicht. Ich habe die Debugger-Konsole verwendet, um die beiden Indexpfade während der Codeausführung zu testen, und sie sehen für mich identisch aus.isEqual funktioniert nicht immer für NSIndexPath? Was kann ich an seiner Stelle verwenden?
Hier ist der Code:
- (BOOL)selectedStreetIsSameAsLastSelectedStreet
{
return [self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet];
}
Hier ist die Ausgabe während der Ausführung des Codes:
(gdb) po self.indexPathOfSelectedStreet
<NSIndexPath 0x60a0770> 2 indexes [26, 1]
(gdb) po self.previousObject.indexPathOfSelectedStreet
<NSIndexPath 0x55b4f70> 2 indexes [26, 1]
(gdb) p (BOOL)[self.indexPathOfSelectedStreet isEqual:self.previousObject.indexPathOfSelectedStreet]
$2 = 0 '\000'
Bin ich etwas falsch zu machen, oder gibt es eine andere Weise, die ich zuverlässig die Gleichheit testen kann zwei NSIndexPfade?
Perfekt. Danke für die schnelle Antwort! – JoBu1324
Ich bin geneigt zu denken, dass dies auch ein Fehler sein könnte. Ich habe das gleiche Problem in iOS 4.2 b3. –
Ich glaube, das liegt daran, dass '-isEqual:' nur einen Zeigervergleich der beiden Indexpfade durchführt. –