获取某个类的私有成员属性
- 我们有时候想要获取属性的时候发现敲不出来,那是因为他的属性都是私有的
- 我们针对这种情况可以使用KVC
- 但是我们需要知道属性的名字,但是我们还不知道名字,就会使用到以下方法
oc runtime 机制 只能动态获取当前类的成员属性,不能获取其子类,或者父类的属性
__unsafe_unretained Class 要获取哪个类的成员属性
unsigned int *outCount 获取Class 下面的所有成员属性的个数
unsigned int outCount = 0;
Ivar *ivar = class_copyIvarList([UIGestureRecognizer class] , &outCount);
for(int i = 0;i<outCount;i++){
//获取成员属性的名字
NSString *name = @(ivar_getName(ivars[i]));
NSLog(@"%@" , name);
}
- ivar这是一个数组
- ivar_getName(ivars[i])这个返回回来的是C语言的名字,所以我们需要给他转换成OC语言(在他前面加上@并且用括号包围起来)