tutorial objective introduccion español iphone xcode ipad debugging ios

iphone - objective - ¿Cómo puedo ver los valores dentro de un objeto en el depurador de Xcode?



xcode manual pdf (5)

Sé que puede sonar como una pregunta estúpida, ya que es una característica trivial en la mayoría de los IDEs modernos, pero estoy inmerso en el desarrollo de iOS y me estoy familiarizando con la plataforma y el SDK, y no puedo resolverlo. Tengo una tonelada de experiencia con MS Visual Studio y veo que Xcode funciona de manera muy similar, aunque todavía tiene bastante funcionalidad en comparación, pero sigue siendo un IDE muy bueno. Cuando se trata de la depuración, Xcode funciona de manera muy similar a Visual Studio, ya que puede pasar el mouse sobre una variable y mostrará su valor actual. Sin embargo, cuando se trata de variables de objeto, casi siempre da solo la dirección junto con la flecha de expansión, que se expande a "NSObject", que se expande a "isa", que se expande a todos los atributos que no me dicen nada. Estoy acostumbrado al IDE, como Visual Studio, siendo lo suficientemente inteligente como para hacer una introspección y mostrar para mí el objeto real y todas sus propiedades y valores inmediatos. Supongo que Xcode es lo suficientemente inteligente como para hacer esto y simplemente no lo estoy usando correctamente.

Si establezco un punto de interrupción en una línea de código que involucra una instancia de objeto (digamos instancia de NSDateComponents), ¿cómo puedo ver los valores de sus propiedades (es decir, año, semana, día, hora, etc.)?

¡Gracias de antemano por tu ayuda!

Editar: Aquí hay una captura de pantalla de la información que obtengo con cada objeto que inspecciono ... alt text http://joecrotchett.com/images/misc/example.jpg


Bueno, pasaron un par de años más, y xcode aún muestra isa = (Class) en la mayoría de los objetos en lugar de poder determinar cuál es el objeto.

Y aunque pasaron un par de años, Apple todavía está atrasado, porque la competencia está corriendo en bucles alrededor de ellos (y ahora están 16 años atrás del estado actual de los competidores).


Desplácese sobre una variable y aparecerá una línea al respecto. Mueva el mouse ligeramente hacia la derecha, y desplace el cursor sobre la flecha del triángulo que está en el lado izquierdo de la ventana emergente, esa flecha se desplazará hacia abajo, y se abrirá otra ventana emergente que muestra todas las propiedades nombradas de ese objeto.

También puede hacer que imprima su valor de "descripción". Mueva su puntero ligeramente hacia la derecha hasta que esté sobre las dos pequeñas flechas "arriba / abajo". Luego, a la izquierda (bueno, "principal"), haga clic. Aparecerá una ventana emergente y una opción será "Imprimir descripción". Si hace clic en eso, pondrá el resultado de su método de -description en la consola.


Es frustrante. El depurador debe conocer la estructura de cada objeto y aparentemente no. Sin embargo, solía ser mucho peor. Al igual que con NSArray, son una matriz de objetos. El depurador no sabe qué tipo de objetos específicamente, y eso se debe al lenguaje Objective-C, no al depurador.

A medida que se sumerge en el desarrollo de iOS, creo que encontrará que Apple está a 15 años de sus competidores en lo que respecta al desarrollo. Eso no es una broma. Pero se están poniendo al día y, créanme, ¡era mucho peor!


Para mis objetos de datos, tiendo a sobreescribir el método de description y dar salida a una cadena con el resumen del objeto. Algo como esto:

Printing description of myContact: {name=Homer, lastname=Simpson, ...}

Esto significa que puede inspeccionar rápidamente un objeto en el depurador o cuando lo NSLog a la consola. Si esa descripción contiene todos los datos relevantes, también puede sobrescribir isEqual: para que use la descripción para comparar dos objetos.


También puede cambiar la forma en que Xcode muestra un valor en el panel de variables locales yendo a "Editar formato de resumen" en el menú del botón derecho.

Por ejemplo, para que llame al método de description , debe configurarlo para

{(NSString*)[$VAR description]}:s

Pocos detalles más aquí: comprensión de la pantalla var depurador Xcode