如果我们要修改某个对象中的某个属性,而我们找不到它,或者说该属性为私有,我们不能直接访问。我们可以用下面方法

进行查询。

 

先导入头文件。

#import <objc/runtime.h> 

然后在合适的方法内写进入下代码 。UILabel就是我们要查询的类

    unsigned int count;

    Ivar * ivarList = class_copyIvarList([UILabel class], &count);

    

    for (int i = 0; i<count; i++) {

        Ivar ivar = ivarList[i];

        NSLog(@"%s",ivar_getName(ivar));

    }

    free(ivarList);

这是c 语言里面的函数,用完后记得要释放free。

这样,程序运行后会打印出类中所有的变量打印出来。我们就可以利用kvc去进行修改。

例:UIView * subView = [self.view valueForKeyPath:@"变量名"];

  subView.backgroundColor = [UIColor redColor];

当然,私有变量代表原代码主人不希望我们进行修改,这可能会引起错误。需要特别注意。