首先,我们定义一个类
@interface Person : NSObject{ CGFloat height; } @property (nonatomic, copy) NSString *name; @property (nonatomic, strong) NSNumber *age; @property (nonatomic, assign) int no; @end
然后,我们在其它文件中使用这个类,注意在使用之前,要包含 #import <objc/message.h>
下面通过一小段代码来获取到上面这个类中所有的成员变量
unsigned int outCount = 0; Ivar *vars = class_copyIvarList([Lender class], &outCount); // 获取到所有的成员变量列表 // 遍历所有的成员变量 for (int i = 0; i < outCount; i++) { Ivar ivar = vars[i]; // 取出第i个位置的成员变量 const char *propertyName = ivar_getName(ivar); // 获取变量名 const char *propertyType = ivar_getTypeEncoding(ivar); // 获取变量编码类型 printf("---%s--%s\n", propertyName, propertyType); }
打印结果:
---height--f ---_name--@"NSString" ---_age--@"NSNumber" ---_no--i 可见,通过上面几句简单的代码就可以获取到某个类中所有变量的名称和类型,然后通过object_setIvar()方法为具体某个对象的某个成员变量赋值。