runtime取内部成员变量,属性,方法

2016-08-06  本文已影响13人  走道牙的人

示例代码

#import <objc/runtime.h>

unsigned int count = 0;

// 拷贝出所有的成员变量列表
Ivar *ivars = class_copyIvarList([UIDatePicker class], &count);

for (int i = 0; i<count; i++) {
    // 取出成员变量
    // Ivar ivar = *(ivars + i);
    Ivar ivar = ivars[i];
    
    // 打印成员变量名字
    NSLog(@"%s", ivar_getName(ivar));
}

// 释放
free(ivars);

// 拷贝出所有的属性列表
objc_property_t *propertys = class_copyPropertyList([UIDatePicker class], &count);

for (int i = 0; i<count; i++) {
    // 取出成员变量
    objc_property_t property = propertys[i];
    
    // 打印成员变量名字
    NSLog(@"%s", property_getName(property));
}

// 释放
free(propertys);

// 拷贝出所有的方法列表
Method *methods = class_copyMethodList([UIDatePicker class], &count);

for (int i = 0; i<count; i++) {
    // 取出成员变量
    Method method = methods[i];
    
    // 打印成员变量名字
    NSLog(@"%@", NSStringFromSelector(method_getName(method)));
}

// 释放
free(methods);
上一篇 下一篇

猜你喜欢

热点阅读