2010-03-09 11 views
10

¿Es posible devolver una lista de todas las propiedades implementadas por un objeto en Objective-C? entiendo las propiedades son sólo captadores y definidores así que no estoy seguro de cómo funcionaría. Si esto no se puede hacer, entonces es posible devolver todos los selectores que un objeto responderá a? Estoy buscando algo similar al método de "métodos" en Ruby.Retorno todas las propiedades de un objeto en Objective-C

Respuesta

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

El siguiente código de salida de todos los métodos implementados en la clase UIImage a la consola:

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

Se ve muy bien, gracias! ¿Qué debo importar para obtener objc_property_t? –

+4

No importa, lo tengo. - #import

1

realidad estaba probando esto ayer y es posible, sin embargo no se puede conseguir todo de UIView. Tome un vistazo a la Objective-C Runtime Reference

Cuestiones relacionadas