iOS运行时获取对象的所有属性、所有方法

释放双眼,带上耳机,听听看~!
一、创建NSObject的Category文件。引入runtime头文件。

Runtime各种方法属性参见:http://blog.csdn.net/sharktoping/article/details/59486347

#import <objc/runtime.h>

 获取对象的所有属性

+ (NSArray *)getAllProperties{

    u_int count = 0;

    //传递count的地址

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

    NSMutableArray *propertyArray = [NSMutableArray arrayWithCapacity:count];

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

        //得到的propertyName为C语言的字符串

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

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

// NSLog(@"%@",[NSString stringWithUTF8String:propertyName]);

    }

    free(properties);

    return propertyArray;

}

 //获取对象的所有方法

+ (NSArray *)getAllMethods{

    unsigned int methodCount = 0;

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

    NSMutableArray *methodArray = [NSMutableArray arrayWithCapacity:methodCount];

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

        Method temp = methodList[i];

        SEL name_F = method_getName(temp);

        const char *name_s = sel_getName(name_F);

        int arguments = method_getNumberOfArguments(temp);

        const char * encoding = method_getTypeEncoding(temp);

//  NSLog(@"MethodName: %@,ArgumentCount: %d,EncodingStyle: %@",[NSString stringWithUTF8String:name_s],arguments,[NSString stringWithUTF8String:encoding]);

        [methodArray addObject:[NSString stringWithUTF8String:name_s]];

    }

    free(methodList);

    return methodArray;

}

  //调用

NSLog(@"%@",[UITextField getAllProperties]);

 

人已赞赏
iOS文章

iOS 如何设置Xcode模拟器地图的当前位置

2020-3-2 3:52:13

iOS文章

iOS UIKit框架

2020-3-2 5:52:17

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索