runtime

来源:互联网 发布:1688传淘宝系统异常 编辑:程序博客网 时间:2024/05/03 17:59

runtime 用来干什么呢??用在那些地方呢?怎么用呢? 
runtime是属于OC的底层, 可以进行一些非常底层的操作(用OC是无法现实的, 不好实现)

  • 在程序运行过程中, 动态创建一个类(比如KVO的底层实现)

  • 在程序运行过程中, 动态地为某个类添加属性\方法, 修改属性值\方法

  • 遍历一个类的所有成员变量(属性)\所有方法 

     Objective-C是一门编译型、动态语言(这里强调下oc是静态类型语言),这在开发语言中是并多见的,一般的动态语言多为解释性语言。OC之所以能够做到即使编译型语言,又是动态语言。就是得益于RunTime机制。

1.相关的头文件和函数 
1> 头文件

  • 利用头文件,我们可以查看到runtime中的各个方法! 

2> 相关应用

  • NSCoding(归档和解档, 利用runtime遍历模型对象的所有属性)
  • 字典 –> 模型 (利用runtime遍历模型对象的所有属性, 根据属性名从字典中取出对应的值, 设置到模型的属性上)
  • KVO(利用runtime动态产生一个类)
  • 用于封装框架(想怎么改就怎么改) 
    这就是我们runtime机制的只要运用方向

3> 相关函数

    1、class_copyPropertyList  获取一份拷贝的成员列表数组

    2、property_getName获取成员名称

    3、class_getInstanceVariable  获取成员对象的Ivar

    4、object_getIvar从Ivar对象中取值

    5、object_setIvar赋值函数

    6、objc_msgSend : 给对象发送消息

    7、class_copyMethodList : 遍历某个类所有的方法

    8、class_copyIvarList : 遍历某个类所有的成员变量

    9、class_…..

    这些是我们学习runtime必须知道的函数!

2.必备常识 
1> Ivar : 成员变量 
2> Method : 成员方法 

0 0