2009-09-09 6 views
7

Die Standardbeschreibung für eine Klasseninstanz gibt "ClassName: 0x105120" zurück. Wie kann ich die Methode unten ändern, um nur den "ClassName" zurückzugeben?Beschreibung zurückgeben nur ClassName?

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

NSString *result; 

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

EDIT: in diesem Fall wäre das korrekt? Obwohl ich verstehe, dass, wenn ich will, um tatsächlich den Klassennamen als NSString bekommst ich NSStringFromClass ([self-Klasse])

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

Dank im Voraus -gary-

+0

warum nicht Sie verwenden nur den richtigen Weg, den Namen der Klasse zu erhalten 'NSLog (@" _ init: % @ ", NSStringFromClass ([Selbstklasse]));'? –

Antwort

20

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

... gibt Ihnen einen NSString mit dem Klassennamen

Edit:

Für beide iPhoneOS und MacOS der Weg zu gehen ist:

NSStringFromClass([self class])

+4

'NSStringFromClass' ist eigentlich der richtige Weg, es auch unter Mac OS X zu machen. '-className' ist Teil einer Kategorie von NSObject, das für das Scripting gedacht ist. – kperryua

+0

Das war mir nicht bewusst, danke! –

+0

Oder, in Objective-C 2.0 und höher, können Sie einfach sagen: 'NSStringFromClass (self.class)' mit Punktnotation. –

Verwandte Themen