Ich möchte in der Lage sein, C-Strukturen zu debuggen, ohne jede Eigenschaft, aus der sie bestehen, explizit eingeben zu müssen.
dh ich möchte in der Lage sein, so etwas zu tun:
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
Offensichtlich wird das '% @' nicht funktionieren, daher die Frage.
c
objective-c
cocoa
cocoa-touch
Mazniak
quelle
quelle
Antworten:
Sie können dies versuchen:
Es gibt eine Reihe von Funktionen von UIKit , die die verschiedenen CG-Strukturen in
NSString
s konvertieren . Der Grund, warum es nicht funktioniert, ist, dass%@
es ein Objekt bedeutet. ACGPoint
ist eine C-Struktur (undCGRect
s undCGSize
s auch).quelle
NSPoint
und dann aufrufenNSStringFromPoint
. Zum Beispiel:NSStringFromPoint(NSPointFromCGPoint(point))
Es gibt einige Funktionen wie:
Ein Beispiel:
quelle
quelle
Ich verwende das folgende Makro, um mir bei NSRect zu helfen:
Sie könnten etwas Ähnliches für CGPoint tun:
Verwenden Sie es wie folgt:
Würde folgendes produzieren:
quelle
Sie können
NSValue
dies verwenden. Ein NSValue- Objekt ist ein einfacher Container für ein einzelnes C- oder Objective-C-Datenelement. Es kann alle Skalartypen wie int, float und char sowie Zeiger, Strukturen und Objekt-IDs enthalten.Beispiel:
AUSGABE :
NSPoint: {10, 30}
Hoffe es hilft dir.
quelle
Da das kaputte RSS von Stack Overflow diese Frage für mich gerade wiederbelebt hat, ist hier meine fast allgemeine Lösung: JAValueToString
Auf diese Weise können Sie schreiben
JA_DUMP(cgPoint)
undcgPoint = {0, 0}
protokolliert werden.quelle
Ja, Sie können einige der folgenden Funktionen verwenden: Zuerst müssen Sie die CGPoint-Struktur in eine Zeichenfolge konvertieren, siehe Beispiel
Zum Beispiel:
So was...
quelle
quelle