RunTime 常用函数

转的这个文章是不错的, 记住几个关键的函数头,objc,class,method, 再根据现在xcode的提示, 基本就能写出来

RunTime 常用函数

接上次的话题,继续就objc/runtime进行讨论. 经过今晚的探究,基本掌握了运行时的函数规则,总的有如下几种函数前缀. 在后边的文章中我会就一些问题再次讨论,本文权当做API的速查手册使用.

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中的代码块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值