2009-09-09 20 views
7

La descripción predeterminada para una instancia de clase devuelve "ClassName: 0x105120". ¿Cómo puedo modificar el método a continuación para simplemente devolver el "ClassName"?Descripción para devolver solo ClassName?

// The code below just returns the address ... 
- (NSString *)description { 

NSString *result; 

result = [NSString stringWithFormat:@"%p", self]; 
    return result; 
} 

EDITAR: en ese caso, ¿sería esto correcto? Aunque entiendo que si quiero conseguir realmente el className como un NSString debo utilizar NSStringFromClass ([clase de auto])

- (id)init { 
NSLog(@"_init: %@", [self class]); 
[super init]; 
return self; 
} 

gracias de antemano -gary-

+0

¿Por qué no sólo tiene que utilizar la forma correcta para obtener el nombre de la clase 'NSLog (@" _ init: % @ ", NSStringFromClass ([self class]));'? –

Respuesta

20

iPhoneOS: NSStringFromClass([self class])
MacOS : [self className]

... le da una NSString con el nombre de clase

Editar:

Para ambos iPhoneOS y MacOS el camino a seguir es:

NSStringFromClass([self class])

+4

'NSStringFromClass' es en realidad la forma correcta de hacerlo en Mac OS X también. '-className' es parte de una categoría en NSObject destinada a scripting. – kperryua

+0

¡No estaba al tanto de eso, gracias! –

+0

O, en Objective-C 2.0 y superior, puede simplemente decir: 'NSStringFromClass (self.class)' usando notación de puntos. –

Cuestiones relacionadas