2009-09-09 5 views
7

La description par défaut d'une instance de classe renvoie "ClassName: 0x105120". Comment puis-je modifier la méthode ci-dessous pour retourner simplement le "ClassName"?Description pour retourner juste ClassName?

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

NSString *result; 

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

EDIT: dans ce cas, est-ce correct? Bien que je ne comprends que si je veux vraiment le nom de classe comme un NSString je devrais utiliser NSStringFromClass ([classe auto])

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

merci à l'avance -Gary-

+0

pourquoi ne pas simplement utiliser la bonne façon d'obtenir le nom de la classe 'NSLog (@" _ INIT: % @ ", NSStringFromClass ([self class]));'? –

Répondre

20

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

... vous donne un NSString avec le nom de la classe

Edit:

Pour les deux iPhoneOS et MacOS la voie à suivre est:

NSStringFromClass([self class])

+4

'NSStringFromClass' est en fait la bonne façon de le faire sur Mac OS X aussi. '-className' fait partie d'une catégorie sur NSObject destinée aux scripts. – kperryua

+0

Je n'étais pas au courant de cela, merci! –

+0

Ou, en Objective-C 2.0 et supérieur, vous pouvez simplement dire: 'NSStringFromClass (self.class)' en utilisant la notation par points. –

Questions connexes