美文网首页
class_copyPropertyList与class_cop

class_copyPropertyList与class_cop

作者: coming_168 | 来源:发表于2019-04-11 18:26 被阅读0次

class_copyPropertyList

  • 获取的是property声明的所有属性

class_copyIvarList

  • 获取的是这个类所有的属性(property声明的属性)和成员变量(@interface大括号中声明的变量)

测试


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

相关文章

网友评论

      本文标题:class_copyPropertyList与class_cop

      本文链接:https://www.haomeiwen.com/subject/pyexwqtx.html