class_copyIvarList和class_copyMethodList

来源:互联网 发布:c语言常用数学函数下载 编辑:程序博客网 时间:2024/06/08 03:11

直接看代码吧


Dog.h

#import <Foundation/Foundation.h>@interface Dog : NSObject@property(nonatomic, strong) NSString * dogName;@property(nonatomic, assign) NSInteger dogAge;@end

Dog.m

#import "Dog.h"@interface Dog ()@property(nonatomic, strong) NSString * dogSex;@end@implementation Dog- (instancetype)init{    self = [super init];    if (self) {        self.dogName = @"dahuang";        self.dogAge = 2;    }    return self;}- (void) printDogName{    NSLog(@"dogName");}@end

测试代码:

#import "ViewController.h"#import <objc/runtime.h>#import <objc/message.h>#import "Person.h"#import "Dog.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.        Dog * dog = [[Dog alloc] init];        unsigned int outCount = 0;        unsigned int outCountMethod = 0;        Ivar * ivars = class_copyIvarList([dog class], &outCount);        Method * methods = class_copyMethodList([dog class], &outCountMethod);        for (int i = 0; i<outCount; i++) {        // 取出i位置对应的成员变量        Ivar ivar = ivars[i];                // 查看成员变量        const char *name = ivar_getName(ivar);                        NSLog(@"%s", name);    }        for (int j = 0; j < outCountMethod; j++) {                Method method = methods[j];                SEL methodSEL = method_getName(method);                const char * selName = sel_getName(methodSEL);                if (methodSEL) {            NSLog(@"sel------%s", selName);        }    }        }


输出:

2015-11-02 12:18:07.851 02-runtime[1970:51391] _dogName2015-11-02 12:18:07.852 02-runtime[1970:51391] _dogAge2015-11-02 12:18:07.853 02-runtime[1970:51391] _dogSex2015-11-02 12:18:07.853 02-runtime[1970:51391] sel------setDogName:2015-11-02 12:18:07.854 02-runtime[1970:51391] sel------setDogAge:2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------printDogName2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------dogName2015-11-02 12:18:07.855 02-runtime[1970:51391] sel------dogAge2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------dogSex2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------setDogSex:2015-11-02 12:18:07.856 02-runtime[1970:51391] sel------.cxx_destruct2015-11-02 12:18:07.857 02-runtime[1970:51391] sel------init






0 0
原创粉丝点击