Ist es möglich, schnelle Enumeration mit einem NSArray zu verwenden, das ein NSDictionary enthält?Schnelle Aufzählung mit einem NSMutableArray, das ein NSDictionary enthält
Ich laufe durch einige Objective C-Tutorials, und der folgende Code startet die Konsole in GDB-Modus
NSMutableArray *myObjects = [NSMutableArray array];
NSArray *theObjects = [NSArray arrayWithObjects:@"easy as 1",@"easy as two", @"Easy as Three"];
NSArray *theKeys = [NSArray arrayWithObjects:@"A",@"B",@"C"];
NSDictionary *theDict = [NSDictionary dictionaryWithObjects:theObjects forKeys:theKeys];
[myObjects addObject:theDict];
for(id item in myObjects)
{
NSLog(@"Found an Item: %@",item);
}
Wenn ich ersetzen die schnelle Auszählung Schleife mit einem traditionellen Zählschleife
int count = [myObjects count];
for(int i=0;i<count;i++)
{
id item;
item = [myObjects objectAtIndex:i];
NSLog(@"Found an Item: %@",item);
}
Die Anwendung wird ohne Absturz ausgeführt und das Wörterbuch wird in das Konsolenfenster ausgegeben.
Ist dies eine Einschränkung der Fast Enumeration, oder fehlt mir etwas subtil von der Sprache? Gibt es andere Probleme beim Verschachteln solcher Sammlungen?
Für Bonuspunkte, wie konnte ich GDB verwenden, um dies selbst zu debuggen?
Ah, einer meiner Lieblings-Cisms. "Das Ding, von dem Sie dachten, dass es richtig funktionierte, hätte nicht sein sollen". Danke für den Anfängerrat! –
Wenn Sie -Wformat aktivieren ("Tycheck ruft in Xcode auf printf/scanf auf"), warnt der Compiler davor. Wenn Sie auch -Werror ("Behandle Warnungen als Fehler" in Xcode) aktivieren, wird der Compiler die Kompilierung über diesen Fehler fehlschlagen. –
Danke Peter, sehr nützlich! –