2010-03-09 5 views
10

Est-il possible de renvoyer une liste de toutes les propriétés implémentées par un objet dans Objective-C? Je comprends que les propriétés ne sont que des getters et des setters donc je ne sais pas comment cela fonctionnerait. Si cela ne peut pas être fait, alors est-il possible de retourner tous les sélecteurs auxquels un objet répondra? Je cherche quelque chose de similaire à la méthode des "méthodes" dans Ruby.Renvoie toutes les propriétés d'un objet dans Objective-C

Répondre

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); 

Le code suivant sortie toutes les méthodes mises en œuvre en classe UIImage à la console:

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

Très belle, merci! Que dois-je importer pour obtenir objc_property_t? –

+4

rien, je l'ai eu. - #import

1

je en train d'essayer ce hier et il est possible, vous pouvez cependant pas obtenir tout de UIView. Jetez un oeil à la Objective-C Runtime Reference

Questions connexes