2009-07-09 9 views

Respuesta

240

Es el método de instancia description, declaradas como:

- (NSString *)description 

Aquí hay un ejemplo de implementación (gracias a grahamparks):

- (NSString *)description { 
    return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author]; 
} 
+5

Nota: si está utilizando CoreData, la propiedad 'description' [está reservada] (http://stackoverflow.com/questions/4717519/why-cant-i-use- description-as-an-attribute-name-for-a-core-data-entity) ... ¡y proporcionará información de depuración útil! En ese caso, tendrá que encontrar su propio nombre de método único. – Nuthatch

+0

¿Está 'debugDescription' también reservado? Aunque creo que 'DebugDescription' se supone que debe ser utilizado por un depurador como LLDB. – MaddTheSane

24

puede invalidar el método de descripción de NSObject:

- (NSString *)description 

Sobre el tema de la tala Recomiendo este blog post para un mejor registro en Objective-C.

+4

No es éste un método estático? Me gustaría que esto funcione en objetos en lugar de la clase. Por ejemplo, si tengo una clase "Foto", con los campos "nombre" y "autor", me gustaría que NSLog imprima esos campos tal como están asignados en el objeto. –

+2

Sí, bien manchado, presioné la tecla incorrecta. Claramente debería prestar más atención cuando pruebo la lectura de mis respuestas. Afortunadamente, alguien ha puesto el ojo en la pelota :-) – teabot

34

añadir esto a la @implementation de su clase Photo:

- (NSString *)description { 
    return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author]; 
} 
13

Hay dos funciones que usted puede u se.

- (NSString*)description 

Esto se mostrará cuando coloque su objeto como, I.E. un parámetro para NSLog. La otra función es Descripción:

- (NSString*)debugDescription 

Esto se llamará cuando lo hace po anInstanceOfYourClass en la ventana de comandos de depuración. Si su clase no tiene una función debugDescription, entonces se llamará a description.

Tenga en cuenta que la clase base NSObject tiene description implementado, pero es bastante escueto: solo muestra la dirección del objeto. Es por eso que le recomiendo que implemente description en cualquier clase de la que desee obtener información, especialmente si utiliza el método description en su código. Si usa description en su código, le sugiero que implemente debugDescription también, haciendo que debugDescription sea más detallado.

1

Esta es la salida de las voces disponibles:

NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description])); 
Cuestiones relacionadas