wake-up-neo.com

Objective-C-Klasse -> Zeichenfolge wie: [NSArray className] -> @ "NSArray"

Ich versuche, einen Zeichenfolgennamen einer Klasse aus dem Klassenobjekt selbst zu erhalten.

// For instance
[NSArray className]; // @"NSArray"

Ich habe object_getClassName(id obj) gefunden, aber dafür muss eine Instanz übergeben werden, und in meinem Fall ist das unnötige Arbeit.

Wie kann ich also eine Zeichenfolge aus einem Klassenobjekt und nicht einer Instanz abrufen?

127
Alex Wayne
NSString *name = NSStringFromClass ([NSArray class]);

Sie können sogar den anderen Weg zurückgehen:

Class arrayClass = NSClassFromString (name);
id anInstance = [[arrayClass alloc] init];
303
dreamlax

Betrachten Sie diese Alternative:

const char *name = class_getName(cls);

Es ist viel schneller, da es kein NSString-Objekt zuweisen und ASCII zu jeder NSString -Darstellung konvertieren muss. So wird NSStringFromClass() implementiert.

1
wonder.mice

Hier ist eine andere Methode, um etwas weniger zu tippen:

NSString *name = [NSArray description];
1
Sherwin Zadeh