class_copyPropertyList与class_cop

2019-04-11  本文已影响0人  coming_168

class_copyPropertyList

class_copyIvarList

测试


image.png
- (void)getClassPropertyList{
    id classobjc = objc_getClass([@"ViewController" UTF8String]);
    
    unsigned int pCount = 0;
    unsigned int iCount = 0;
    // 获取当前类属性(property声明的属性)
    objc_property_t *properties = class_copyPropertyList(classobjc, &pCount);
    // 获取当前类属性(包含property声明属性和成员变量)
    Ivar *ivars = class_copyIvarList(classobjc, &iCount);

    NSLog(@"properties->%u,ivars->%u",pCount,iCount);
    
    for (int i=0; i<pCount; i++) {
        objc_property_t property = properties[i];
        const char *cName = property_getName(property);
        // 转换为OC字符串
        NSString *propertyName = [NSString stringWithCString:cName encoding:NSUTF8StringEncoding];
        NSLog(@"propertyName->%@",propertyName);
    }
    for (int i=0; i<iCount; i++) {
        Ivar var = ivars[i];
        NSString *ivarName = [NSString stringWithCString:ivar_getName(var) encoding:NSUTF8StringEncoding];
         NSLog(@"ivarName->%@",ivarName);
    }
}

打印结果


image.png
上一篇 下一篇

猜你喜欢

热点阅读