运行时机制

传送门 

objc_

class_

object_

method_

property_

protocol_

ivar_ ,sel_ ,imp_

1.objc_xxx 系列函数

函数名称函数作用

objc_getClass获取Class对象

objc_getMetaClass获取MetaClass对象

objc_allocateClassPair分配空间,创建类(仅在 创建之后,注册之前 能够添加成员变量)

objc_registerClassPair注册一个类(注册后方可使用该类创建对象)

objc_disposeClassPair注销某个类

objc_allocateProtocol开辟空间创建协议

objc_registerProtocol注册一个协议

objc_constructInstance构造一个实例对象(ARC下无效)

objc_destructInstance析构一个实例对象(ARC下无效)

objc_setAssociatedObject为实例对象关联对象

objc_getAssociatedObje*ct获取实例对象的关联对象

objc_removeAssociatedObjects清空实例对象的所有关联对象

objc_msgSend发送ObjC消息

-

objc_系列函数关注于宏观使用,如类与协议的空间分配,注册,注销等操作

2.class_xxx 系列函数

函数名称函数作用

class_addIvar为类添加实例变量

class_addProperty为类添加属性

class_addMethod为类添加方法

class_addProtocol为类遵循协议

class_replaceMethod替换类某方法的实现

class_getName获取类名

class_isMetaClass判断是否为元类

objc_getProtocol获取某个协议

objc_copyProtocolList拷贝在运行时中注册过的协议列表

class_getSuperclass获取某类的父类

class_setSuperclass设置某类的父类

class_getProperty获取某类的属性

class_getInstanceVariable获取实例变量

class_getClassVariable获取类变量

class_getInstanceMethod获取实例方法

class_getClassMethod获取类方法

class_getMethodImplementation获取方法的实现

class_getInstanceSize获取类的实例的大小

class_respondsToSelector判断类是否实现某方法

class_conformsToProtocol判断类是否遵循某协议

class_createInstance创建类的实例

class_copyIvarList拷贝类的实例变量列表

class_copyMethodList拷贝类的方法列表

class_copyProtocolList拷贝类遵循的协议列表

class_copyPropertyList拷贝类的属性列表

-

class_系列函数关注于类的内部,如实例变量,属性,方法,协议等相关问题

3.object_xxx 系列函数

函数名称函数作用

object_copy对象copy(ARC无效)

object_dispose对象释放(ARC无效)

object_getClassName获取对象的类名

object_getClass获取对象的Class

object_setClass设置对象的Class

object_getIvar获取对象中实例变量的值

object_setIvar设置对象中实例变量的值

object_getInstanceVariable获取对象中实例变量的值 (ARC中无效,使用object_getIvar)

object_setInstanceVariable设置对象中实例变量的值 (ARC中无效,使用object_setIvar)

-

objcet_系列函数关注于对象的角度,如实例变量

4.method_xxx 系列函数

函数名称函数作用

method_getName获取方法名

method_getImplementation获取方法的实现

method_getTypeEncoding获取方法的类型编码

method_getNumberOfArguments获取方法的参数个数

method_copyReturnType拷贝方法的返回类型

method_getReturnType获取方法的返回类型

method_copyArgumentType拷贝方法的参数类型

method_getArgumentType获取方法的参数类型

method_getDescription获取方法的描述

method_setImplementation设置方法的实现

method_exchangeImplementations替换方法的实现

-

method_系列函数关注于方法内部,如果方法的参数及返回值类型和方法的实现

5.property_xxx 系列函数

函数名称函数作用

property_getName获取属性名

property_getAttributes获取属性的特性列表

property_copyAttributeList拷贝属性的特性列表

property_copyAttributeValue拷贝属性中某特性的值

-

property_系类函数关注与属性*内部,如属性的特性等

6.protocol_xxx 系列函数

函数名称函数作用

protocol_conformsToProtocol判断一个协议是否遵循另一个协议

protocol_isEqual判断两个协议是否一致

protocol_getName获取协议名称

protocol_copyPropertyList拷贝协议的属性列表

protocol_copyProtocolList拷贝某协议所遵循的协议列表

protocol_copyMethodDescriptionList拷贝协议的方法列表

protocol_addProtocol为一个协议遵循另一协议

protocol_addProperty为协议添加属性

protocol_getProperty获取协议中的某个属性

protocol_addMethodDescription为协议添加方法描述

protocol_getMethodDescription获取协议中某方法的描述

7.ivar_xxx 系列函数

函数名称函数作用

ivar_getName获取Ivar名称

ivar_getTypeEncoding获取类型编码

ivar_getOffset获取偏移量

8.sel_xxx 系列函数

函数名称函数作用

sel_getName获取名称

sel_getUid注册方法

sel_registerName注册方法

sel_isEqual判断方法是否相等

9.imp_xxx 系列函数

函数名称函数作用

imp_implementationWithBlock通过代码块创建IMP

imp_getBlock获取函数指针中的代码块

imp_removeBlock移除IMP中的代码块

你可能感兴趣的:(运行时机制)