所谓runtime即运行时, 由于objectiveC语言有消息机制, 在调用方法时,会发送一条消息到指定地址,此时用runtime就可以实现很多黑魔法的操作。
这里用User类举例
@interface User : NSObject
@property (nontamic, copy) NSString *name;
@property (nontamic, copy) NSString *number;
@end
unsigned int count;
获取类名 const char * class_getName(Class cls);
获取父类 Class class_getSuperclass(Class cls)
判断一个类是不是元类 BOOL class_isMetaClass(Class cls) (这里稍微解释下元类, OC里实例对象的isa指向类的对象,类对象的isa指针指向元类,元类的isa指向根元类,元类包含类对象的类方法列表)
获取实例大小 size_t class_getInstanceSize (Class cls)
获取类中置顶名称实例成员变量的信息 Ivar class_getClassVariable (Class cls, const char *name)
获取类成员变量