1 Class cls = [self class];
2 while (cls != [NSObject class])
3 {
4 unsigned int numberOfIvars = 0;
5 Ivar* ivars = class_copyIvarList(cls, &numberOfIvars);//获取cls 类成员变量列表
6 for(const Ivar* p = ivars; p < ivars+numberOfIvars; p++)//采用指针+1 来获取下一个变量
7 {
8 Ivar const ivar = *p;//取得这个变量
9 const char *type = ivar_getTypeEncoding(ivar); //取得这个变量的类型
10 NSString *key = [NSString stringWithUTF8String:ivar_getName(ivar)];//取得这个变量的名称
11
12 NSLog(@"++ Name=\"%@\" Type=%@ Value=%@",key,[NSString stringWithUTF8String:type],[self valueForKey:key]);
13 }
14 cls = class_getSuperclass(cls);
15 }