iOS-Runtime常用的API
2020-03-20 本文已影响0人
那些喧嚣
Runtime的相关API在苹果开发者中心有介绍,这里只是简单做一些笔记,抽取一些可能比较常用的,便于记忆runtime苹果官方文档
1. objc_xxx系列API
- objc_msgSend: 发送ObjC消息,消息机制的起点
- objc_getClass: 获取Class对象
- objc_getMetaClass: 获取元类(MetaClass)对象
- objc_allocateClassPair: 分配控件,创建类
- objc_registerClassPair: 注册一个类
- objc_disposeClassPair: 注销某个类
- objc_allocateProtocol: 给注册协议开辟空间
- objc_registerProtocol: 注册一个协议
- objc_setAssociatedObject: 为实例对象关联对象
- objc_getAssociateObje*ct: 获取实例对象的关联对象
- objc_removeAssociateObjects: 清空实例对象的所有关联对象
2.object_xxx系列API
- object_getClassName: 获取对象的类名
- object_getClass: 获取对象的Class(和objc_getClass要区分开)
- object_setClass: 设置对象的Class
- object_getIvar: 获取对象中实例变量的值
- object_setIvar: 设置对象中实例变量的值
3.ivar_xxx系列API
- ivar_getName: 获取Ivar名称
- ivar_getTypeEncoding: 获取类型编码
- ivar_getOffset: 获取偏移量
4.sel_xxx系列API
- sel_getName: 获取方法名称
- sel_registerName: 注册方法
- sel_isEqual: 判断方法是否相等
5.imp_xxx系列API
- imp_getBlock: 获取函数指针中的代码块
- imp_removeBlock: 移除IMP中的代码块
6.method_xxx系列API
- method_getName: 获取方法名
- method_getImplementation: 获取方法的实现
- method_getTypeEncoding: 获取方法的类型编码
- method_getNumberOfArguments: 获取方法的参数个数
- method_copyReturnType: 拷贝方法的返回类型
- method_getReturnType: 获取方法的返回类型
- method_copyArgumentType: 拷贝方法的参数类型
- method_getArgumentType: 获取方法的参数类型
- method_getDescription: 获取方法的描述
- method_setImplementation: 设置方法的实现
- method_exchangeImplementations: 替换方法的实现(常用的那个黑魔法)
7.property_XXX系列API
- property_getName: 获取属性名
- property_getAttributes: 获取属性的特性列表
- property_copyAttributeList: 拷贝属性的特性列表
- property_copyAttributeValue: 拷贝属性中某特性的值
8.protocol_xxx 系列API
- protocol_isEqual: 判断两个协议是否一致
- protocol_getName: 获取协议名称
- protocol_conformsToProtocol:判断协议A是否遵循协议B
- protocol_copyPropertyList:拷贝协议列表
- protocol_copyProtocolList: 拷贝某协议所遵循的协议列表
- protocol_copyMethodDescriptionList: 拷贝协议的方法列表
- protocol_addProtocol: 为一个协议遵循另一个协议
- protocol_addProperty: 为协议添加属性
- protocol_getProperty: 获取协议中的某个属性