Reflection

To retrieve the properties for an object, you use:

  
unsigned int outCount;  
objc\_property\_t *propList = class_copyPropertyList([objectToInspect class], &outCount);  

"propList" will contain an array of the properties found inside "objectToInspect", with "outCount" containing the total number of properties

To retrieve the properties name you would:

  
NSString *propName = [NSString stringWithUTF8String:property_getName(propList[indexOfWantedElement)]];  

To get the attributes of the property you would:

  
NSString *attrs = [NSString stringWithUTF8String:property_getAttributes(propList[indexOfWantedElement)]];  

A detailed account can be found in the Objective-C documentation