Runtime 官方文档Api地址:https://developer.apple.com/reference/objectivec/objective_c_runtime?language=objc
获取类的名称:
class_getName
获取父类:
class_getSuperclass
判断是否为元类:
class_isMetaClass
获取实例对象的size:
class_getInstanceSize
获取实例变量:
class_getInstanceVariable
获取类变量:
class_getClassVariable
为一个类添加变量:
class_addIvar
获取变量列表:
class_copyIvarList
获取变量布局:
class_getIvarLayout
设置变量布局:
class_setIvarLayout
获取weak变量布局:
class_getWeakIvarLayout
设置weak变量布局:
class_setWeakIvarLayout
获取属性:
class_getProperty
获取属性列表:
class_copyPropertyList
动态添加方法:
class_addMethod
获取实例方法:
class_getInstanceMethod
获取类方法:
class_getClassMethod
获取方法列表:
class_copyMethodList
更换方法:
class_replaceMethod
获取方法实现指针:
class_getMethodImplementation
class_getMethodImplementation_stret
判断是否能够响应selector:
class_respondsToSelector
向类中添加协议:
class_addProtocol
添加属性:
class_addProperty
更换属性:
class_replaceProperty
判断类是否实现了这个协议:
class_conformsToProtocol
获取协议列表:
class_copyProtocolList
获取类的版本:
class_getVersion
设置类的版本:
class_setVersion
动态创建一个类:
objc_allocateClassPair
动态销毁一个类:
objc_disposeClassPair
注册一个类:
objc_registerClassPair
复制一个类:
objc_duplicateClass
创建一个类的实例,默认的类分配内存分配内存区域:
class_createInstance
在制定位置创建一个类的实例:
objc_constructInstance
销毁一个未释放内存类的实例,并删除相关引用:
objc_destructInstance
copy一个对象:
object_copy
销毁一个对象:
object_dispose
获取实例变量的值:
object_getIvar
设置实例变量的值:
object_setIvar
获取类名:
object_getClassName
获取对象的类:
object_getClass
设置类的对象:
object_setClass
获取定义类注册列表
objc_getClassList
创建并返回一个所有注册类指针列表
objc_copyClassList
返回指定类的类定义
返回Class类型,可为空
objc_lookUpClass
返回id类型
objc_getClass
返回Class类型,不为空
objc_getRequiredClass
获取指定类的元类定义
objc_getMetaClass
返回实例变量的名称
ivar_getName
返回实例变量的字符类型,如:@"NSString"
ivar_getTypeEncoding
返回实例变量的偏移量
ivar_getOffset
设置关联属性
objc_setAssociatedObject
获取关联属性
objc_getAssociatedObject
移除该对象的所有关联属性
objc_removeAssociatedObjects
消息发送
向一个对象发送消息
objc_msgSend
向一个结构体发消息
objc_msgSend_stret
向一个父类的实例发送消息
objc_msgSendSuper
向一个结构体发消息
objc_msgSendSuper_stret
调用制定方法的实现
method_invoke
调用指定的方法,该方法返回一个数据结构的实现
method_invoke_stret
获取方法的名称
method_getName
获取方法的实现
method_getImplementation
获取方法参数和返回值类型的字符描述
method_getTypeEncoding
返回一个字符串描述一个方法的返回类型
method_copyReturnType
返回一个字符串描述一个方法的参数类型。
method_copyArgumentType
获取一个方法的返回值类型
method_getReturnType
返回一个方法的参数个数
method_getNumberOfArguments
返回一个方法单一参数类型字符串描述
method_getArgumentType
获取方法的结构描述
method_getDescription
设置方法的实现
method_setImplementation
交换方法的实现
method_exchangeImplementations
返回所有objective - c框架和加载动态库的名字。
objc_copyImageNames
返回这个类起源于动态库的名称
class_getImageName
返回制定静态库或动态库的所有类的名称
objc_copyClassNamesForImage
获取sel的名称
sel_getName
注册一个objective - c运行时系统的方法,将方法名称映射到一个选择器,并返回选择的值。
sel_registerName
在运行时注册一个方法名称
sel_getUid
判断两个方法的selector是否相等
sel_isEqual
获取指定协议
objc_getProtocol
返回在运行时所有协议
objc_copyProtocolList
注册一个新创建的协议在运行时
objc_registerProtocol
创建一个新协议的实例
objc_allocateProtocol
在运行时注册一个新创建的协议
objc_registerProtocol
向一个协议增加方法
protocol_addMethodDescription
添加一个注册协议到另一个正在组件的协议中
protocol_addProtocol
向一个正在组建的协议中添加属性
protocol_addProperty
获取协议的名称
protocol_getName
判断两个协议是否相等
protocol_isEqual
返回对指定协议方法结构体描述的数组
protocol_copyMethodDescriptionList
返回一个指定协议指定方法的结构体描述
protocol_getMethodDescription
返回协议中声明属性的数组
protocol_copyPropertyList
返回指定协议的指定数组
protocol_getProperty
返回一个协议的协议采用的数组
protocol_copyProtocolList
判断一个协议是否遵从另外一个协议
protocol_conformsToProtocol
获取属性名称
property_getName
返回属性的属性字符串如:T@"NSString",C,N,V_name
property_getAttributes
给一个属性名返回属性值
property_copyAttributeValue
给定一个属性返回属性特征的数组
property_copyAttributeList
在编译期插入当在foreach迭代期间检测到突变
objc_enumerationMutation
设置当前突变处理程序
objc_setEnumerationMutationHandler
创建一个指向函数的指针,调用方法被调用时指定的块
imp_implementationWithBlock
返回使用IMP关联的block,该IMP是使用imp_implementationWithBlock创建的
imp_getBlock
释放从一个用imp_implementationWithBlock创建的IMP来的block,并释放创建block是副本
imp_removeBlock
加载一个弱指针引用的对象,并返回他
objc_loadWeak
在一个被—__weak修饰的变量存储一个新值
objc_storeWeak