获取类的私有属性

2018-04-08  本文已影响0人  耽于幽夜

有些时候想要自定义类的一些格式,可是类的相关属性是私有的;这时候就要yongKVC来进行相应的操作;于是就要先知道相关类的属性列表

于是乎:

unsigned int count;// 记录属性个数

    objc_property_t *properties = class_copyPropertyList([UIAlertAction class], &count);

    // 遍历

    NSMutableArray *propertiesArray = [NSMutableArray array];

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

        // objc_property_t 属性类型

        objc_property_t property = properties[i];

        // 获取属性的名称 C语言字符串

        const char *cName = property_getName(property);

        // 转换为Objective C 字符串

        NSString *name = [NSString stringWithCString:cName encoding:NSUTF8StringEncoding];

        [propertiesArray addObject:name];

    }

    free(properties);

    NSLog(@"propertiesArray == %@",propertiesArray);

    //获取成员变量列表

    NSMutableArray *ivarArray = [NSMutableArray array];

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

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

        Ivar myIvar = ivarList[i];

        const char *ivarName = ivar_getName(myIvar);

        [ivarArray addObject:[NSString stringWithUTF8String:ivarName]];

    }

    free(ivarList);

    NSLog(@"ivarArray == %@",ivarArray);

上一篇 下一篇

猜你喜欢

热点阅读