2009-09-09 16 views
7

Domyślny opis instancji klasy zwraca "ClassName: 0x105120". Jak mogę zmodyfikować poniższą metodę, aby zwrócić tylko "ClassName"?Opis, aby zwrócić tylko nazwę klasy?

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

NSString *result; 

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

EDYCJA: w takim przypadku byłoby to poprawne? Chociaż rozumiem, że jeśli chcę, aby rzeczywiście uzyskać className jako NSString należy używać NSStringFromClass ([Klasa siebie])

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

góry dzięki -gary-

+0

dlaczego nie można po prostu użyć poprawny sposób, aby uzyskać nazwę klasy 'NSLog (@" _ startowych: % @ ", NSStringFromClass ([klasa własna]);'? –

Odpowiedz

20

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

... daje NSString z nazwą klasy

Edit:

Dla obu iPhoneOS i MacOS do zrobienia jest:

NSStringFromClass([self class])

+4

'NSStringFromClass' jest właściwym sposobem na zrobienie tego również w systemie Mac OS X. '-className' jest częścią kategorii na NSObject przeznaczonej do skryptowania. – kperryua

+0

Nie wiedziałem o tym, dzięki! –

+0

Albo, w Objective-C 2.0 i wyższych, możesz po prostu powiedzieć: 'NSStringFromClass (self.class)' przy użyciu notacji kropkowej. –

Powiązane problemy