美文网首页
运行时(runtime)

运行时(runtime)

作者: 帥陽 | 来源:发表于2017-02-08 15:14 被阅读4次

    1>是什么:

    1.是一套纯C语言的API,属于一个C语言的库,包含了很多底层的C语言的API

    2.平时编写的OC代码,在运行过程中,其实最终都是转换成了runtime的C语言代码,runtime算是OC的幕后工作者

    3.举例

    //runtime实现机制

    //OC

    [[XZYPerson alloc]init];

    //C语言

    objc_msgSend(objc_msgSend("XZYPerson",@"alooc"),@"init");

    2>用法:

    1.runtime是OC的底层,可以进行一些非常底层的操作(用OC是无法实现的,不好实现)

    *在程序运行过程中动态生成的类(比如KVO的底层实现)

    *在程序运行过程中动态的为某个类添加属性\方法修改属性值\方法(重写对象的setter方法)

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

    3.相关的头文件和方法

    1.头文件

    <objc/runtime.h>

    <objc/message.h>

    2.相关应用

    *NSCoding(归档和解档)

    *字典转模型(利用runtime遍历模型对象的所有属性,很据属性名称从字典取出对应的值,设置到模型的属性上)

    *KVO(利用runtime动态产生一个类)

    *用于封装框架

    3.相关函数

    *objc_msgSend: 给对象发送消息

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

    #class_copyIvarList: 遍历某个类所有的成员变量 该方法等同于class_copyPropertyList,返回的都是一个类的所有成员变量数组,但是class_copyIvarList返回的是一个指针数组 用Ivar的对象接收,而class_copyPropertyList返回的C语言的数组,用objc_property_t的对象接收

    *class_...

    4>必备常识

    1.Ivar: 成员变量

    2.Method: 成员方法

    相关文章

      网友评论

          本文标题:运行时(runtime)

          本文链接:https://www.haomeiwen.com/subject/pyovittx.html