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
NSStrings. La razón por la que no funciona es porque%@significa un objeto. ACGPointes una estructura C (y también lo sonCGRects yCGSizes).fuente
NSPointy 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
NSValuepara 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