//获取所有成员变量,可以获取那些没有被苹果公开的属性,从而让我们使用KVC更加方便。
+ (NSArray *)getIvars{
NSMutableArray *ivarArray = [NSMutableArray array];
unsigned int count = 0;
//拷贝所有的成员变量
Ivar *ivarList = class_copyIvarList([self class], &count);
for (int i = 0; i < count; i++) {
//取出成员变量
Ivar ivar = ivarList[i];
NSString *name = [NSString stringWithUTF8String:ivar_getName(ivar)];
//存放成员变量
[ivarArray addObject:name];
}
//释放
free(ivarList);
return ivarArray;
}
getAllProperties方法见上一篇
NSLog(@"%@",[UITextField getAllProperties]);//132
/*
使用方法;
1、给NSObject创建分类Category文件,
2、在该文件中写入如上方法、调用的时候自然就如下。
[UITextField getIvars]
3、由上一篇获取所有属性的那个方法,可以获取UITextField属性132个、均为苹果公开的、可直接使用的。
然而使用获取成员变量的方法,虽然获取65个,但有些是并没有公开的,从而使用KVC可以间接访问。
4、例如_placeholderLabel 知道UITextField有这个属性后,使用KVC即可以对其颜色字体进行操作。
*/
NSLog(@"%@",[UITextField getIvars]);//65