2010-03-09 20 views
10

Ist es möglich, eine Liste aller Eigenschaften zurückzugeben, die von einem Objekt in Objective-C implementiert wurden? Ich verstehe die Eigenschaften sind nur Getters und Setter, so dass ich nicht sicher bin, wie es funktionieren würde. Wenn dies nicht möglich ist, können alle Selektoren zurückgegeben werden, auf die ein Objekt reagiert? Ich bin auf der Suche nach etwas ähnlich wie die "Methoden" -Methode in Ruby.Gibt alle Eigenschaften eines Objekts in Objective-C zurück

Antwort

19
// Get properties list  
objc_property_t* class_copyPropertyList(Class cls, unsigned int *outCount); 
// Get methods list 
Method* class_copyMethodList(Class cls, unsigned int *outCount); 

Der folgende Code wird ausgegeben alle in UIImage Klasse implementierten Methoden zur Konsole:

unsigned int count; 
Method* methods = class_copyMethodList([UIImage class], &count); 
for (size_t i = 0; i < count; ++i) 
    NSLog([NSString stringWithCString:sel_getName(method_getName(methods[i]))]); 
free(methods); 
+0

Sieht gut aus, Danke! Was muss ich importieren, um objc_property_t zu erhalten? –

+4

vergiss es, ich habe es. - #import

1

ich eigentlich war dies gestern ausprobiert und es ist möglich, aber man kann nicht alles von UIView bekommen kann. Werfen Sie einen Blick auf die Objective-C Runtime Reference

Verwandte Themen