void method_getArgumentType(Method m, unsigned int index, char *dst, size_t dst_len) 获取函数参数类型
struct objc_method_description *method_getDescription(Method m) 获取函数描述
IMP method_setImplementation(Method m, IMP imp) 设置函数实现IMP
void method_exchangeImplementations(Method m1, Method m2) 交换函数的实现IMP
const char *ivar_getName(Ivar v) 获取变量名
const char *ivar_getTypeEncoding(Ivar v)
ptrdiff_t ivar_getOffset(Ivar v)
const char *property_getName(objc_property_t property) 获取属性名称
const char *property_getAttributes(objc_property_t property) 获取name和value的总体描述
objc_property_attribute_t *property_copyAttributeList(objc_property_t property, unsigned int *outCount) 获取所有的name和value的总体描述
char *property_copyAttributeValue(objc_property_t property, const char *attributeName) 拷贝name和value的总体描述
Protocol *objc_getProtocol(const char *name) 获取指定协议(此协议只生命未被实现则返回nil)
Protocol * __unsafe_unretained *objc_copyProtocolList(unsigned int *outCount) 获取运行时所知道的所有协议的数组 获取到的数组需要使用free来释放
BOOL protocol_conformsToProtocol(Protocol *proto, Protocol *other) 判断一个协议是否遵守了另一个协议
BOOL protocol_isEqual(Protocol *proto, Protocol *other) 判断两个协议是否相等
const char *protocol_getName(Protocol *p) 获取协议名
struct objc_method_description protocol_getMethodDescription(Protocol *p, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod) 判断某方法是否属于某个协议
struct objc_method_description *protocol_copyMethodDescriptionList(Protocol *p, BOOL isRequiredMethod, BOOL isInstanceMethod, unsigned int *outCount) 条件查找该代理的所有方法
objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty) 获取协议的指定属性
objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount) 获取协议中的属性列表
objc_property_t *protocol_copyPropertyList2(Protocol *proto, unsigned int *outCount, BOOL isRequiredProperty, BOOL isInstanceProperty) 返回符合条件的所有属性
Protocol * __unsafe_unretained *protocol_copyProtocolList(Protocol *proto, unsigned int *outCount) 获取协议 proto 遵守的所有协议
Protocol *objc_allocateProtocol(const char *name) 创建新的协议实例
void objc_registerProtocol(Protocol *proto) 在运行时中注册新创建的协议
void protocol_addMethodDescription(Protocol *proto, SEL name, const char *types, BOOL isRequiredMethod, BOOL isInstanceMethod) 为协议添加方法
void protocol_addProperty(Protocol *proto, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount, BOOL isRequiredProperty, BOOL isInstanceProperty) 为协议添加属性
const char **objc_copyImageNames(unsigned int *outCount) 获取所有加载的Objective-C框架和动态库的名称
const char *class_getImageName(Class cls) 获取指定类所在动态库
const char **objc_copyClassNamesForImage(const char *image, unsigned int *outCount) 获取指定库或框架中所有类的类名
const char *sel_getName(SEL sel) 获取方法名的C字符串
SEL sel_getUid(const char *str) 注册一个方法
SEL sel_registerName(const char *str) 注册一个方法,将方法名映射到一个选择器,并返回这个选择器
BOOL sel_isEqual(SEL lhs, SEL rhs) 比较两个选择器
void objc_enumerationMutation(id obj) 抛出异常
void objc_setEnumerationMutationHandler(void (*handler)(id))
void objc_setForwardHandler(void *fwd, void *fwd_stret) 设置了消息转发的回调
IMP imp_implementationWithBlock(id block)
id imp_getBlock(IMP anImp)
BOOL imp_removeBlock(IMP anImp)
id objc_loadWeak(id *location)
id objc_storeWeak(id *location, id obj)
void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy) 用于给对象添加关联对象,传入 nil 则可以移除已有的关联对象
id objc_getAssociatedObject(id object, const void *key) 用于获取关联对象
void objc_removeAssociatedObjects(id object) 用于移除一个对象的所有关联对象