Mit meinen eigenen Klassen überschreibe ich normalerweise die Beschreibungsmethode - (NSString *), um das Debuggen zu erleichtern. Wenn ich jedoch eine Beschreibung für eine von mir implementierte Klasse aufruft, die rekursiv die description-Methode von meinen anderen Klassen aufruft, werden alle Formatierungszeichen aus den 'tieferen' Klassen maskiert. Das macht jedes hübsche Drucken schwierig zu implementieren. Hier ist ein Beispiel, um zu verdeutlichen:Korrekte Implementierung der NSObject-Beschreibungsmethode für verschachtelte Klassen mit Sammlungen
@interface Foo {
NSArray *barsArray;
}
@end
@implementation Foo
- (NSString *)description {
return [NSString stringWithFormat: @"foo contents: %@", barsArray];
}
@interface Bar {
NSString *s1;
NSString *s2;
}
@implementation Bar
- (NSString *)description {
return [NSString stringWithFormat: @"s1: %@\ns2: %@", s1, s2];
}
In diesem Fall werden die \ n Zeilenumbrüche aus der Beschreibung der Klasse B in der Ausgabe der Klasse A Beschreibung Verfahren entkommen lassen. Irgendeine Idee, wie man dieses Verhalten loswerden oder umgehen kann? Es ist besonders ärgerlich, wenn verschachtelte Klassen gedruckt werden, die alle Sammlungen enthalten.
Wenn ich Ihre Implementierung nehme, barsArray eine Bar *, und dann print-Objekt auf einem Foo-Objekt aufrufen, wird die Newline korrekt gedruckt, nicht maskiert. Wo genau ist dein Problem? –
Wenn Sie anstelle eines Arrays von Bar ein einzelnes Bar * -Element haben, mit dem Sie Recht haben, wird alles korrekt gedruckt. Allerdings mit dem Array scheint es, dass die Beschreibung Methode für Array, entkommt die Zeichenfolgen, die von aufrufenden Beschreibung für Array-Elemente zurückgegeben werden – maciejs