iOS Runtime获取对象隐藏的属性

释放双眼,带上耳机,听听看~!

//获取所有成员变量,可以获取那些没有被苹果公开的属性,从而让我们使用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

 

人已赞赏
iOS文章

iOS UIKit框架

2020-3-2 5:52:17

iOS文章

iOS GCD的简单方便

2020-3-2 7:52:24

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索