• 获取对象的所有属性&&获取对象的所有方法


    #import <objc/runtime.h>

    @implementation NSObject (PropertyListing)   

    /* 获取对象的所有属性 */

    - (NSDictionary *)properties_aps

    {

        NSMutableDictionary *props = [NSMutableDictionarydictionary];   

       unsigned int outCount, i;   

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

       for (i = 0; i<outCount; i++)

        {

           objc_property_t property = properties[i];

           const char* char_f =property_getName(property);

           NSString *propertyName = [NSStringstringWithUTF8String:char_f];

           id propertyValue = [selfvalueForKey:(NSString *)propertyName];   

           if (propertyValue) [props setObject:propertyValue forKey:propertyName];   

        }   

       free(properties);   

       return props;   

    }   

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

    -(void)printMothList

    {

       unsigned int mothCout_f =0;

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

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

        {

           Method temp_f = mothList_f[i];

           IMP imp_f = method_getImplementation(temp_f);

           SEL name_f = method_getName(temp_f);

           const char* name_s =sel_getName(method_getName(temp_f));

           int arguments = method_getNumberOfArguments(temp_f);

           const char* encoding =method_getTypeEncoding(temp_f);

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

                                                arguments,

                                [NSStringstringWithUTF8String:encoding]);

        }

       free(mothList_f);

    }

    #import <objc/runtime.h>
    
    @implementation NSObject (XXOOProperty)
    
    /* 获取对象的所有属性和属性内容 */
    - (NSDictionary *)getAllPropertiesAndVaules
    {
        NSMutableDictionary *props = [NSMutableDictionarydictionary];
        unsigned int outCount, i;
        objc_property_t *properties =class_copyPropertyList([selfclass], &outCount);
        for (i = 0; i<outCount; i++)
        {
            objc_property_t property = properties[i];
            const char* char_f =property_getName(property);
            NSString *propertyName = [NSStringstringWithUTF8String:char_f];
            id propertyValue = [selfvalueForKey:(NSString *)propertyName];
            if (propertyValue) [props setObject:propertyValue forKey:propertyName];
        }
        free(properties);
        return props;
    }
    /* 获取对象的所有属性 */
    - (NSArray *)getAllProperties
    {
        u_int count;
        
        objc_property_t *properties  =class_copyPropertyList([selfclass], &count);
        
        NSMutableArray *propertiesArray = [NSMutableArrayarrayWithCapacity:count];
        
        for (int i = 0; i < count ; i++)
        {
            const char* propertyName =property_getName(properties[i]);
            [propertiesArray addObject: [NSString stringWithUTF8String: propertyName]];
        }
        
        free(properties);
        
        return propertiesArray;
    }
    /* 获取对象的所有方法 */
    -(void)getAllMethods
    {
        unsigned int mothCout_f =0;
        Method* mothList_f = class_copyMethodList([selfclass],&mothCout_f);
        for(int i=0;i<mothCout_f;i++)
        {
            Method temp_f = mothList_f[i];
            IMP imp_f = method_getImplementation(temp_f);
            SEL name_f = method_getName(temp_f);
            const char* name_s =sel_getName(method_getName(temp_f));
            int arguments = method_getNumberOfArguments(temp_f);
            const char* encoding =method_getTypeEncoding(temp_f);
            NSLog(@"方法名:%@,参数个数:%d,编码方式:%@",[NSStringstringWithUTF8String:name_s],
                  arguments,
                  [NSString stringWithUTF8String:encoding]);
        }
        free(mothList_f);
    }
    
    
    @end
  • 相关阅读:
    zip
    sublime 3 注册码
    css3 文本控制自动换行
    ST3 package control
    cf1139D-Steps to One
    2019-2020 ACM-ICPC, Asia Xuzhou Regional Contest
    2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest
    Tree
    B
    多源对多源最短路
  • 原文地址:https://www.cnblogs.com/yunis/p/3809952.html
Copyright © 2020-2023  润新知