获取@interface的所有变量名称或属性

时间:2012-01-12 14:40:41

标签: iphone objective-c ios

我想要在目标c中使用接口或类的所有变量名称或属性。

我可以使用valueForKey:message来动态获取和设置变量的值。

2 个答案:

答案 0 :(得分:2)

如果您希望获得类的所有“属性”,可以使用Objective-C运行时来获取此数据:

unsigned int propertyCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &propertyCount);

for(i = 0; i < propertyCount; i++)
{
    objc_property_t property = properties[i];
    NSString *propertyName = [NSString stringWithUTF8String:property_getName(property)];
}

free(properties);

使用此对象,您可以获取与给定属性关联的所有元数据。这不适合胆小的人(并且它是基于C的API)。确定每个属性的信息(比如它的策略和类型)并不简单。

答案 1 :(得分:1)

查看Objective-C Runtime Reference,特别是class_copyIvarListclass_copyPropertyList函数。使用这些运行时函数应该是您正在寻找的。

相关问题