美文网首页iOS开发
IOS 遍历未知对象的属性和方法(转)

IOS 遍历未知对象的属性和方法(转)

作者: hypercode | 来源:发表于2018-06-15 16:46 被阅读0次

    https://blog.csdn.net/crazychickone/article/details/36413671/

    /* 注意:要先导入ObjectC运行时头文件,以便调用runtime中的方法*/

    #import 

    @implementationNSObject (PropertyListing)

    1、/* 获取对象的所有属性,不包括属性值 */

    - (NSArray *)getAllProperties

    {

       u_int count;   

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

    NSMutableArray *propertiesArray = [NSMutableArray arrayWithCapacity:count];

    for(int i =0; i

        {

    const char* propertyName =property_getName(properties[i]);

    [propertiesArray addObject: [NSString stringWithUTF8String: propertyName]];

        }   

    free(properties);

    return propertiesArray; 

    }  

    2、/* 获取对象的所有属性 以及属性值 */

    - (NSDictionary*)properties_aps

    {

       NSMutableDictionary *props = [NSMutableDictionarydictionary];   

    unsignedintoutCount, i;

    objc_property_t*properties =class_copyPropertyList([selfclass], &outCount);

    for(i =0; i

        {

    objc_property_tproperty = properties[i];

    constchar* char_f =property_getName(property);

    NSString*propertyName = [NSString stringWithUTF8String:char_f];

    idpropertyValue = [self valueForKey:(NSString*)propertyName];

    if(propertyValue) [propssetObject:propertyValueforKey:propertyName];

        }   

    free(properties);

    returnprops;

    }   

    3、/* 获取对象的所有方法 */

    -(void)printMothList

    {

    unsignedintmothCout_f =0;

    Method* mothList_f =class_copyMethodList([selfclass],&mothCout_f);

    for(inti=0;i

        {

    Methodtemp_f = mothList_f[i];

    IMPimp_f =method_getImplementation(temp_f);

    SELname_f =method_getName(temp_f);

    constchar* name_s =sel_getName(method_getName(temp_f));

    intarguments =method_getNumberOfArguments(temp_f);

    constchar* encoding =method_getTypeEncoding(temp_f);

    NSLog(@"方法名:%@,参数个数:%d,编码方式:%@",[NSStringstringWithUTF8String:name_s],

    arguments,[NSString stringWithUTF8String:encoding]);

        }

    free(mothList_f);

    }

    @end 

    相关文章

      网友评论

        本文标题:IOS 遍历未知对象的属性和方法(转)

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