Chcę mieć możliwość debugowania struktur C bez konieczności jawnego wpisywania każdej właściwości, z której się składają.
tzn. chcę móc zrobić coś takiego:
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
Oczywiście „% @” nie będzie działać, stąd pytanie.
c
objective-c
cocoa
cocoa-touch
mazniak
źródło
źródło
Odpowiedzi:
Możesz spróbować:
Istnieje wiele funkcji udostępnianych przez UIKit, które przekształcają różne struktury CG w
NSString
s. Powodem, dla którego nie działa, jest to, że%@
oznacza obiekt. ACGPoint
jest strukturą C (podobnie jakCGRect
s iCGSize
s).źródło
NSPoint
a następnie zadzwonićNSStringFromPoint
. Na przykład:NSStringFromPoint(NSPointFromCGPoint(point))
Istnieje kilka funkcji, takich jak:
Przykład:
źródło
źródło
Używam następującego makra, aby pomóc mi z NSRect:
Możesz zrobić coś podobnego dla CGPoint:
Używając go w następujący sposób:
Spowoduje to:
źródło
Możesz
NSValue
do tego użyć . Obiekt NSValue to prosty kontener dla pojedynczego elementu danych C lub Objective-C. Może przechowywać dowolne typy skalarne, takie jak int, float i char, a także wskaźniki, struktury i identyfikatory obiektów.Przykład:
WYNIK :
NSPoint: {10, 30}
Mam nadzieję, że to ci pomoże.
źródło
Ponieważ zepsuty kanał RSS przepełnienia stosu właśnie wskrzesił to pytanie, oto moje prawie ogólne rozwiązanie: JAValueToString
To pozwala pisać
JA_DUMP(cgPoint)
i byćcgPoint = {0, 0}
zalogowanym.źródło
Tak, możesz użyć kilku funkcji, takich jak: Najpierw musisz przekonwertować strukturę CGPoint na ciąg, patrz przykład
Na przykład:
Lubię to...
źródło
źródło