iOS反射机制

来源:互联网 发布:php调用python 编辑:程序博客网 时间:2024/05/19 12:17



/**

*获取对象的所有属性

*/

- (NSArray *)getAllPropertis {

    NSMutableArray *array = [NSMutableArrayarray];

    unsigned int count;

    objc_property_t *properties = class_copyPropertyList(self, &count); //获取属性列表

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

        objc_property_t property = properties[i];

        NSString *propertyName = [NSStringstringWithCString:property_getName(property)encoding:NSUTF8StringEncoding]; //将属性转化为NSString类型

        [array addObject:propertyName];

    }

    return array;

}


/**

*获取对象的所有方法

*/

-(NSArray*)getAllMethodList

{

    unsigned int methodCount =0;

    Method* methodList = class_copyMethodList([selfclass],&methodCount);

    

    NSMutableArray* array = [NSMutableArrayarrayWithCapacity:methodCount];

    for(int i = 0; i<methodCount; i++)

    {

        Method tempMethod = methodList[i];

        IMP imp = method_getImplementation(tempMethod);//函数指针

        SEL name = method_getName(tempMethod);//选择子

        const char* cName =sel_getName(method_getName(tempMethod));

        int argumentsCount = method_getNumberOfArguments(tempMethod); //方法的参数个数

        const char* encoding =method_getTypeEncoding(tempMethod); //编码方式

        

        NSString* strName = [NSStringstringWithUTF8String:cName];

        

        [array addObject:strName];

    }

    

    free(methodList);

    

    return array;

}


0 0
原创粉丝点击