ios高级 runTime机制

RunTime是一套比较底层的C语言API,属于C语言库。平时我们编写的ios代码,最终都会抓换成runtime的C语言代码。

所谓的运行时机制,就是只在运行过程中才去确定对象的类型,方法等,利用RunTime机制可以在程序运行时动态的修改类、对象以及其属性方法等。

其实在解析数据的时候用的-setValuesForKeysWithDictionary:就是运用了这个原理去遍历类的所有属性,

在我们要使用运行时的地方,都需要包含头文件:#import<objc/runtime.h>,swift可以直接使用

1.运用RunTime可以获取属性名,对应方法class_copyPropertyList,主义都是纯C语言API

2.运用RunTime可以获取对象的所有属性名和属性值

3.运用RunTime可以获取对象的所有方法名,对应方法class_copyMethodList

4.运用RunTime可以获取对象的成员变量的名称,对应方法class_copylvarList,ivar_getName获取成员变量名称

5.运用RunTime可以在运行时发送消息,对应方法objc_msgSend方法

6.这点就神奇了,一般情况下Categrory是不可以扩展属性的,但是运用RunTime可以做到这一点,objc_setAssociatedObject

posted @ 2016-05-13 11:22  繁星ll  阅读(346)  评论(0编辑  收藏  举报