Quiero poder depurar estructuras C sin tener que escribir explícitamente cada propiedad en la que consisten.
es decir, quiero poder hacer algo como esto:
CGPoint cgPoint = CGPointMake(0,0);
NSLog(@"%@",cgPoint);
Obviamente el '% @' no funcionará, de ahí la pregunta.
c
objective-c
cocoa
cocoa-touch
mazniak
fuente
fuente
Respuestas:
Puedes probar esto:
Hay una serie de funciones proporcionadas por UIKit que convierten las diversas estructuras CG en
NSString
s. La razón por la que no funciona es porque%@
significa un objeto. ACGPoint
es una estructura C (y también lo sonCGRect
s yCGSize
s).fuente
NSPoint
y luego llamarNSStringFromPoint
. Por ejemplo:NSStringFromPoint(NSPointFromCGPoint(point))
Hay algunas funciones como:
Un ejemplo:
fuente
fuente
Utilizo la siguiente macro para ayudarme con NSRect:
Podrías hacer algo similar para CGPoint:
Usándolo de la siguiente manera:
Produciría lo siguiente:
fuente
Puedes usar
NSValue
para esto. Un objeto NSValue es un contenedor simple para un solo elemento de datos C o Objective-C. Puede contener cualquiera de los tipos escalares como int, float y char, así como punteros, estructuras e identificadores de objeto.Ejemplo:
SALIDA
NSPoint: {10, 30}
Espero que te ayude.
fuente
Dado que el RSS roto de Stack Overflow acaba de resucitar esta pregunta para mí, aquí está mi solución casi general: JAValueToString
Esto le permite escribir
JA_DUMP(cgPoint)
ycgPoint = {0, 0}
registrarse.fuente
Sí, puede usar algunas funciones como: Primero, debe convertir la estructura CGPoint en una cadena, vea el ejemplo
Por ejemplo:
Me gusta esto...
fuente
fuente