摘要:
我们知道,Objective-C是一门动态语言,它将很多静态语言在编译时期做的事放到了运行时来处理。用C++编写的程序通过编译器直接把函数地址硬编码进入可执行文件;而Objective-C无法通过编译器直接把函数地址硬编码进入可执行文件,而是在程序运行的时候,利用Runtime根据条件判断作出决定, 阅读全文
摘要:
上篇介绍了Runtime类和对象的相关知识点,在4.5和4.6小节,也介绍了成员变量和属性的一些方法应用。本篇将讨论实现细节的相关内容。 在讨论之前,我们先来介绍一个很冷僻但又很有用的一个关键字:@encode 1.类型编码 为了协助运行时系统,编译器用字符串为每个方法的返回值、参数类型和方法选择器 阅读全文
摘要:
前两篇介绍了类与对象、成员变量&属性&关联对象的相关知识,本篇我们将开始讲解Runtime中最有意思的一部分内容:消息处理机制。我们从一个示例开始。 在OC中,我们使用下面这种方式来调用方法: 对上面的方法调用,我们用Runtime的消息发送机制改造一下: 对于上面的结果,我们来验证一下: 上面的C 阅读全文
摘要:
通过前面几篇对Runtime的讲解,本篇汇总一下Runtime实际中常用的一些场景。 1.获取类的基本信息 获取类名: 获取成员变量: 获取属性: 获取类的实例方法: 2.动态创建类和类的基本信息 创建类: 添加成员变量: 添加属性: 添加方法: 3.关联对象 4.消息转发/方法交换 详见Runti 阅读全文