2009-09-09 12 views
7

La descrizione predefinita per un'istanza di classe restituisce "ClassName: 0x105120". Come posso modificare il metodo qui sotto per restituire semplicemente "ClassName"?Descrizione per restituire solo ClassName?

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

NSString *result; 

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

MODIFICA: in tal caso, sarebbe corretto? Anche se capisco che se voglio ottenere effettivamente il className come NSString dovrei usare NSStringFromClass ([classe auto])

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

grazie in anticipo -gary-

+0

Perché non basta usare il modo corretto per ottenere il nome della classe 'NSLog (@" _ init: % @ ", NSStringFromClass ([self class]));'? –

risposta

20

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

... ti dà un NSString con il nome della classe

Edit:

Per entrambi iPhoneOS e MacOS la strada da percorrere è:

NSStringFromClass([self class])

+4

'NSStringFromClass' è in realtà il modo corretto di farlo anche su Mac OS X. '-className' fa parte di una categoria su NSObject pensato per lo scripting. – kperryua

+0

Non ne ero a conoscenza, grazie! –

+0

Oppure, in Objective-C 2.0 e versioni successive, puoi semplicemente dire: 'NSStringFromClass (self.class)' usando la notazione dot. –

Problemi correlati