2010-08-21 8 views
7

Im NSObject Protokoll definiert es eine Methode, die ähnlich wie diese ist:Kategorienart Objective C

-(Class) class 

Um welche Art von Objekt ist das Klassenobjekt? Oder ist es überhaupt ein Objekt? Was kann ich mit dem Objekt machen? Kann ich die Basisklasse oder die angenommenen Protokolle erhalten?

Antwort

15

Class ist selbst eine Klasse definiert durch die Objective-C runtime, ähnlich der Class Klasse in Java. Zum Beispiel können Sie die Funktion class_getClassName() verwenden den Namen einer Klasse zu erhalten:

NSObject *o = [[[NSObject alloc] init] autorelease]; 
NSLog(@"%s\n", class_getClassName([o class])); // prints "NSObject" 

Sie alle Arten von Selbstbeobachtung/Reflexion mit Class Objekte tun können; Details finden Sie in der Objective-C-Laufzeitreferenz.

1

Es ist jetzt

NSObject *o = [[NSObject alloc]init];
NSLog(@"%s\n", object_getClassName([o class]));

object_getClassName statt class_getClassName