Schritt für Schritt - Entwickeln für OS X und iOS
Schritt für Schritt - Entwickeln für OS X und iOS
Klassen, Teil 3 - description

Einzelne Variablen einer Klasse auszugeben ist für Sie keine Herausforderung mehr, das haben Sie schon gelernt. Es ist auch wirklich sehr einfach:
NSLog(@"Name: %@",[myPerson name]);
NSLog(
@"Alter: %d",[myPerson age]);
Aber haben Sie auch schon Mal probiert, das gesamte Objekt auf der Konsole auszugegeben, etwa so:
NSLog(@"Person: %@",myPerson);
Das Resultat ist wahrscheinlich nicht wie erwartet, aber seien Sie mal ehrlich, was haben Sie erwartet?
stacks_image_36E25279-DCC5-4972-A201-B1B2D97C226A
Das sieht jetzt irgendwie aus wie eine Speicheradresse, vielleicht wollten Sie genau das sehen, wahrscheinlich aber ganz etwas anderes. Es wird Sie überraschen, aber das, was die Klasse ausgibt, wenn sie auf dieser Art angesprochen wird, können Sie ändern. Das Geheimnis liegt in der Methode description jeder Klasse. Noch haben Sie diese Methode nicht implementiert, also verwendet die Klasse eine Methode, die sie von NSObject geerbt hat. Was dort ausgegeben wird, haben Sie ja inzwischen gesehen.

Versuchen Sie zu Anfang etwas ganz einfaches, indem Sie die Person-Klasse um die description-Methode ergänzen.
-(NSString *)description
{
    return @"Ich bin eine Person";
}
stacks_image_295C4617-6486-4F62-A4A7-8B77CE38053E
Das ist jetzt schon besser als zuvor. Noch nicht perfekt, aber ein Anfang und ein vielleicht brauchbares Resultat. Viel sinnvoller wäre es, das Personenobjekt würde mit einem Befehl all seine Daten ausgeben. Wenn Sie das wollen, sollte ihr Code in etwa so aussehen:
-(NSString *)description
{
    return[NSString stringWithFormat:@"Name :%@ ,Alter :%d",name,age];
}
stacks_image_2A5DC065-B622-4E38-ABF8-A1772B61D24B
Wie Sie sehen, kann die description also durchaus eingesetzt werden, um sinnvolle Informationen von einem Objekt zu bekommen.

nächste Seite