2012-02-21 16 views
31

He visto mencionar la descripción y depuraciónDescripción para fines de depuración, pero todavía he visto explicaciones precisas sobre cuándo y en qué condiciones pueden producir resultados diferentes.Descripción de NSObject y depuraciónDescripción

La documentación de NSObject tampoco tiene nada sobre debugDescription. Pregunta: ¿Cuándo usar qué, y bajo qué condición, deberían/​​serían diferentes?

Respuesta

37

Technical Note TN2124

Nota: impresión a objetos llama en realidad el método debugDescription del objeto especificado. NSObject implementa este método llamando al método de descripción. Por lo tanto, de forma predeterminada, la descripción de depuración de un objeto es la misma que su descripción. Sin embargo, puede anular la depuraciónDescripción si desea desacoplarlos; muchos objetos de cacao hacen esto.

Si tiene debugDescription implementado, la impresión del objeto en GDB mostrará su resultado. Sabiendo que description se usa en la interfaz de usuario (sé que los enlaces lo hacen), es posible que desee utilizar esto para imprimir información adicional que el usuario no necesita ver.

1

Una adición a lo que ya se ha dicho.

Si desea mejorar la salida mientras trabaja con po en lldb, puede anular el método debugDescription. Solo tenga en cuenta que el autoimpresión (el objeto mismo) llamará al método de descripción. Si por alguna razón <ClassName: objectAddress> no es bueno para usted, también anula ese método.

Así que mi punto aquí fue resaltar que la impresión auto llamará al método description, mientras que po llama a debugDescription que por defecto llama a la descripción. Dando esto, puedes diferenciar los resultados de esas llamadas.