objective-c tostring nslog

objective c - ¿Cuál es el equivalente de Objective-C para "toString()", para usar con NSLog?



(5)

¿Hay algún método que pueda anular en mis clases personalizadas para que cuando

NSLog(@"%@", myObject)

se llama, imprimirá los campos (o lo que yo considere importante) de mi objeto? Supongo que estoy buscando el equivalente de Objective-C de Java''s toString() .


Agregue esto a @implementation de su clase de Foto:

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


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

- (NSString *)description

Aquí hay una implementación de ejemplo (gracias a Grahamparks):

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


Esto generará las voces disponibles:

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


Hay dos funciones que puedes usar.

- (NSString*)description

Esto se mostrará cuando coloque su objeto como, por ejemplo, un parámetro para NSLog . La otra función de descripción es:

- (NSString*)debugDescription

Se po anInstanceOfYourClass cuando haga po anInstanceOfYourClass en la ventana del comando de depuración. Si su clase no tiene una función debugDescription , entonces se llamará a la description .

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


Puede anular el método de descripción de NSObject:

- (NSString *)description

Sobre el tema del registro, recomiendo esta publicación de blog para un mejor registro en Objective-C.