Iphone:如何获取类的所有属性?

时间:2012-01-09 10:05:53

标签: iphone reflection runtime

我有这堂课:

@interface Mission : BaseModel  
{
NSString  *Description;
NSDate  *EndDate;
NSMutableArray  *MissionSectionList;
NSString  *Name;
NSDate  *StartDate;
}
@property (nonatomic, retain) NSString  *Description;
@property (nonatomic, retain) NSDate  *EndDate;
@property (nonatomic, retain) NSMutableArray  *MissionSectionList;
@property (nonatomic, retain) NSString  *Name;
@property (nonatomic, retain) NSDate  *StartDate;
@end

是否有可能找到这门课程的所有内容? 我用

试了一下
  

Ivar class_getClassVariable(Class cls,const char * name)

但我不知道名字应该是什么:

  

name:要获取的类变量定义的名称。

实际上我想在不知道名字的情况下得到所有这些。

这可能吗?

1 个答案:

答案 0 :(得分:3)

您可以使用class_copyIvarList函数获取该类的所有实例变量的列表。然后你可以迭代它来获得每个ivar的属性。 (请注意,您负责释放用于ivars数组的内存)。示例代码可能如下所示:

unsigned int count;
Ivar *varList = class_copyIvarList([Mission class],&count);
for (int i = 0; i < count; ++i){
    Ivar var = varList[i];
    // Do when you need with ivar
}
free(varList);