今天简单的介绍下 runtime创建动态类及常用方法的介绍
开辟一个类的内存空间
Class myClass = objc_allocateClassPair([self class], newName.UTF8String, 0);
第一个参数:继承于哪个父类
第二个参数:类的名字
注册这个类
objc_registerClassPair(myClass);
给这个类添加方法
class_addMethod([self class], @selector(click), (IMP) clickimp, "v@:“);
第一个参数:要添加方法的类
第二个参数:方法实现的接口名
第三个参数:方法接口的实现函数
第四个参数:函数对应的编码
给类添加属性
objc_setAssociatedObject(self,"obj", @“helloword”, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
第二个参数:属性的 key 值
第三个参数:属性的 value 值
获取类的属性值
id obj = objc_getAssociatedObject(self ,"obj");
根据该类的 key 值获取属性值
拦截未被实现的类方法
+(BOOL)resolveClassMethod:(SEL)sel
sel未被实现的类方法接口
拦截未被实现的实例方法
+(BOOL)resolveInstanceMethod:(SEL)sel
sel未被实现的实例方法接口声明
消息发送
id objc_msgSend(id self, SEL op, ...);
第一个参数:要发送的对象
第二个参数:要发送的方法
第三个参数:方法对应的参数列表